From 177057a7a27be4e39dea4a1e2bb9b05685c3ca8c Mon Sep 17 00:00:00 2001 From: tonywangcn Date: Tue, 13 Oct 2026 09:34:50 +0800 Subject: [PATCH] chore: sync SDK to public contract 1.47.1 --- CHANGELOG.md | 6 + crawlora/client.py | 2 +- crawlora/client.pyi | 32 +++- crawlora/operations.py | 15 +- docs/operations.md | 4 +- openapi/public.json | 340 +++++++++++++++++++++++++++++++---------- pyproject.toml | 2 +- 7 files changed, 314 insertions(+), 87 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 83c586d..af5c463 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## v1.47.1-sdk.1 + +- Regenerated Go, TypeScript, Python, Ruby, Java, and PHP clients from the public API contract (3,695 operations; operation set unchanged). +- Added BBB response fields for profile-review state and notices, local chapter newsroom URLs, and expanded BBB news, topic, and business-facet schemas. +- Refreshed the affected BBB and dataset endpoint descriptions and parameter metadata from the current Swagger contract. + ## v1.47.0-sdk.1 - Regenerated from the public API contract (3695 operations). diff --git a/crawlora/client.py b/crawlora/client.py index e1a15eb..c9cf2f5 100644 --- a/crawlora/client.py +++ b/crawlora/client.py @@ -20,7 +20,7 @@ from .operations import GROUPS, OPERATIONS DEFAULT_BASE_URL = "https://api.crawlora.net/api/v1" -VERSION = "1.47.0-sdk.1" +VERSION = "1.47.1-sdk.1" DEFAULT_USER_AGENT = f"crawlora-python-sdk/{VERSION}" DEFAULT_MAX_RETRY_DELAY = 30.0 DEFAULT_RETRY_STATUSES = (408, 409, 425, 429) diff --git a/crawlora/client.pyi b/crawlora/client.pyi index bde3416..91c680c 100644 --- a/crawlora/client.pyi +++ b/crawlora/client.pyi @@ -4748,8 +4748,10 @@ ModelBbbBusinessResponse = TypedDict('ModelBbbBusinessResponse', { 'local_bbb_url': NotRequired[str], 'more_info_url': NotRequired[str], 'name': NotRequired[str], + 'notice': NotRequired[str], 'phone': NotRequired[str], 'products_and_services': NotRequired[list[str]], + 'profile_under_review': NotRequired[bool], 'rating': NotRequired[str], 'rating_reasons': NotRequired[list[str]], 'social_media': NotRequired[list[str]], @@ -4808,8 +4810,10 @@ ModelBbbComplaintsResponse = TypedDict('ModelBbbComplaintsResponse', { 'filed_last_12_months': NotRequired[int], 'has_more': NotRequired[bool], 'hidden_complaints': NotRequired[int], + 'notice': NotRequired[str], 'page': NotRequired[int], 'period_text': NotRequired[str], + 'profile_under_review': NotRequired[bool], 'published_complaints': NotRequired[int], 'source_url': NotRequired[str], 'submit_complaint_url': NotRequired[str], @@ -4955,6 +4959,7 @@ ModelBbbdirectoryCountryRegions = TypedDict('ModelBbbdirectoryCountryRegions', { ModelBbbdirectoryLocalBbbchapter = TypedDict('ModelBbbdirectoryLocalBbbchapter', { 'id': NotRequired[str], 'name': NotRequired[str], + 'news_url': NotRequired[str], 'offices': NotRequired[list[ModelBbbdirectoryOffice]], 'open_to_public': NotRequired[bool], 'url': NotRequired[str], @@ -4966,6 +4971,7 @@ ModelBbbdirectoryLocalBbbresponse = TypedDict('ModelBbbdirectoryLocalBbbresponse 'id': NotRequired[str], 'languages': NotRequired[list[str]], 'name': NotRequired[str], + 'news_url': NotRequired[str], 'offices': NotRequired[list[ModelBbbdirectoryOffice]], 'open_to_public': NotRequired[bool], 'service_territory': NotRequired[list[str]], @@ -5080,11 +5086,15 @@ ModelBbbnewsNewsItem = TypedDict('ModelBbbnewsNewsItem', { }, total=False) ModelBbbnewsNewsResponse = TypedDict('ModelBbbnewsNewsResponse', { - 'country': NotRequired[str], + 'city': NotRequired[str], + 'country': NotRequired[Literal['us', 'ca']], 'items': NotRequired[list[ModelBbbnewsNewsItem]], + 'local_bbb_id': NotRequired[str], + 'local_bbb_name': NotRequired[str], 'page': NotRequired[int], 'page_size': NotRequired[int], 'source_url': NotRequired[str], + 'state': NotRequired[str], 'topic': NotRequired[str], 'total': NotRequired[int], }, total=False) @@ -5096,8 +5106,12 @@ ModelBbbnewsTopic = TypedDict('ModelBbbnewsTopic', { }, total=False) ModelBbbnewsTopicsResponse = TypedDict('ModelBbbnewsTopicsResponse', { - 'country': NotRequired[str], + 'city': NotRequired[str], + 'country': NotRequired[Literal['us', 'ca']], + 'local_bbb_id': NotRequired[str], + 'local_bbb_name': NotRequired[str], 'source_url': NotRequired[str], + 'state': NotRequired[str], 'topics': NotRequired[list[ModelBbbnewsTopic]], }, total=False) @@ -13343,7 +13357,14 @@ ModelDatasetsAppsSearchResponse = TypedDict('ModelDatasetsAppsSearchResponse', { ModelDatasetsBbbbusinessesFacetResponse = TypedDict('ModelDatasetsBbbbusinessesFacetResponse', { 'dataset': NotRequired[str], 'facet': NotRequired[str], + 'has_more': NotRequired[bool], 'items': NotRequired[list[ModelEsBbbbusinessesFacetItem]], + 'limit': NotRequired[int], + 'missing': NotRequired[int], + 'offset': NotRequired[int], + 'total': NotRequired[int], + 'total_values': NotRequired[int], + 'values_truncated': NotRequired[bool], }, total=False) ModelDatasetsBbbbusinessesSearchResponse = TypedDict('ModelDatasetsBbbbusinessesSearchResponse', { @@ -79119,12 +79140,16 @@ DatasetsBbbBusinessesFacetsParams = TypedDict('DatasetsBbbBusinessesFacetsParams '_response_type': NotRequired[ResponseType], '_timeout': NotRequired[float], '_headers': NotRequired[Mapping[str, str]], - 'facet': Required[Literal['category', 'state', 'city', 'rating', 'accredited', 'entity_type', 'run_id', 'alert_title', 'has_alerts']], + 'facet': Required[Literal['country', 'category', 'state', 'city', 'rating', 'accredited', 'entity_type', 'run_id', 'alert_title', 'has_alerts']], + 'limit': NotRequired[int], + 'offset': NotRequired[int], 'q': NotRequired[str], 'category': NotRequired[str], + 'country': NotRequired[Literal['us', 'ca']], 'state': NotRequired[str], 'city': NotRequired[str], 'rating': NotRequired[Literal['A+', 'A', 'A-', 'B+', 'B', 'B-', 'C+', 'C', 'C-', 'D+', 'D', 'D-', 'F']], + 'min_rating_rank': NotRequired[int], 'accredited': NotRequired[bool], 'has_alerts': NotRequired[bool], 'alert_title': NotRequired[str], @@ -79148,6 +79173,7 @@ DatasetsBbbBusinessesSearchParams = TypedDict('DatasetsBbbBusinessesSearchParams '_headers': NotRequired[Mapping[str, str]], 'q': NotRequired[str], 'category': NotRequired[str], + 'country': NotRequired[Literal['us', 'ca']], 'state': NotRequired[str], 'city': NotRequired[str], 'rating': NotRequired[Literal['A+', 'A', 'A-', 'B+', 'B', 'B-', 'C+', 'C', 'C-', 'D+', 'D', 'D-', 'F']], diff --git a/crawlora/operations.py b/crawlora/operations.py index 6df98e8..5a621f8 100644 --- a/crawlora/operations.py +++ b/crawlora/operations.py @@ -11780,10 +11780,12 @@ 'formParams': [], 'id': 'datasets-bbb-businesses-facets', 'method': 'GET', + 'paginatable': True, 'path': '/datasets/bbb-businesses/facets', 'pathParams': [], 'produces': ['application/json'], - 'queryParams': [{'enum': ['category', + 'queryParams': [{'enum': ['country', + 'category', 'state', 'city', 'rating', @@ -11796,8 +11798,14 @@ 'name': 'facet', 'required': True, 'type': 'string'}, + {'in': 'query', 'name': 'limit', 'type': 'integer'}, + {'in': 'query', 'name': 'offset', 'type': 'integer'}, {'in': 'query', 'name': 'q', 'type': 'string'}, {'in': 'query', 'name': 'category', 'type': 'string'}, + {'enum': ['us', 'ca'], + 'in': 'query', + 'name': 'country', + 'type': 'string'}, {'in': 'query', 'name': 'state', 'type': 'string'}, {'in': 'query', 'name': 'city', 'type': 'string'}, {'enum': ['A+', @@ -11816,6 +11824,7 @@ 'in': 'query', 'name': 'rating', 'type': 'string'}, + {'in': 'query', 'name': 'min_rating_rank', 'type': 'integer'}, {'in': 'query', 'name': 'accredited', 'type': 'boolean'}, {'in': 'query', 'name': 'has_alerts', 'type': 'boolean'}, {'in': 'query', 'name': 'alert_title', 'type': 'string'}, @@ -11846,6 +11855,10 @@ 'produces': ['application/json'], 'queryParams': [{'in': 'query', 'name': 'q', 'type': 'string'}, {'in': 'query', 'name': 'category', 'type': 'string'}, + {'enum': ['us', 'ca'], + 'in': 'query', + 'name': 'country', + 'type': 'string'}, {'in': 'query', 'name': 'state', 'type': 'string'}, {'in': 'query', 'name': 'city', 'type': 'string'}, {'enum': ['A+', diff --git a/docs/operations.md b/docs/operations.md index 3e9b78e..eaa8ca3 100644 --- a/docs/operations.md +++ b/docs/operations.md @@ -663,9 +663,9 @@ Total operations: `3695` | datasets | `datasets.apps_charts_search` | `datasets-apps-charts-search` | `GET /datasets/apps-charts/search` | `q` (query str)
`store` (query Literal['ios', 'android'])
`chart_type` (query Literal['top_free', 'top_paid', 'top_grossing', 'new'])
`platform` (query str)
`collection` (query str)
`category` (query str)
`country` (query str)
`app_id` (query str)
`date` (query str)
`sort` (query Literal['rank', 'rank_desc', 'date_desc'])
`page` (query int)
`page_size` (query int) | `ApiKeyAuth` | `DatasetsAppsChartsSearchResponse` | | | datasets | `datasets.apps_reviews_search` | `datasets-apps-reviews-search` | `GET /datasets/apps-reviews/search` | `q` (query str)
`store` (query Literal['ios', 'android'])
`app_id` (query str)
`country` (query str)
`min_score` (query int)
`sort` (query Literal['recent', 'score_desc', 'score_asc', 'helpful_desc'])
`page` (query int)
`page_size` (query int) | `ApiKeyAuth` | `DatasetsAppsReviewsSearchResponse` | | | datasets | `datasets.apps_search` | `datasets-apps-search` | `GET /datasets/apps/search` | `q` (query str)
`store` (query Literal['ios', 'android', 'both'])
`platforms` (query list[str])
`category` (query str)
`country` (query str)
`developer` (query str)
`free` (query bool)
`min_rating` (query float)
`min_reviews` (query int)
`sort` (query Literal['relevance', 'rating_desc', 'reviews_desc', 'installs_desc', 'updated_at_desc', 'popularity_desc'])
`page` (query int)
`page_size` (query int) | `ApiKeyAuth` | `DatasetsAppsSearchResponse` | | -| datasets | `datasets.bbb_businesses_facets` | `datasets-bbb-businesses-facets` | `GET /datasets/bbb-businesses/facets` | `facet` (query Literal['category', 'state', 'city', 'rating', 'accredited', 'entity_type', 'run_id', 'alert_title', 'has_alerts'] required)
`q` (query str)
`category` (query str)
`state` (query str)
`city` (query str)
`rating` (query Literal['A+', 'A', 'A-', 'B+', 'B', 'B-', 'C+', 'C', 'C-', 'D+', 'D', 'D-', 'F'])
`accredited` (query bool)
`has_alerts` (query bool)
`alert_title` (query str)
`min_complaints` (query int)
`entity_type` (query str)
`run_id` (query str) | `ApiKeyAuth` | `DatasetsBbbBusinessesFacetsResponse` | | +| datasets | `datasets.bbb_businesses_facets` | `datasets-bbb-businesses-facets` | `GET /datasets/bbb-businesses/facets` | `facet` (query Literal['country', 'category', 'state', 'city', 'rating', 'accredited', 'entity_type', 'run_id', 'alert_title', 'has_alerts'] required)
`limit` (query int)
`offset` (query int)
`q` (query str)
`category` (query str)
`country` (query Literal['us', 'ca'])
`state` (query str)
`city` (query str)
`rating` (query Literal['A+', 'A', 'A-', 'B+', 'B', 'B-', 'C+', 'C', 'C-', 'D+', 'D', 'D-', 'F'])
`min_rating_rank` (query int)
`accredited` (query bool)
`has_alerts` (query bool)
`alert_title` (query str)
`min_complaints` (query int)
`entity_type` (query str)
`run_id` (query str) | `ApiKeyAuth` | `DatasetsBbbBusinessesFacetsResponse` | | | datasets | `datasets.bbb_businesses_item` | `datasets-bbb-businesses-item` | `GET /datasets/bbb-businesses/items/{id}` | `id` (path str required) | `ApiKeyAuth` | `DatasetsBbbBusinessesItemResponse` | | -| datasets | `datasets.bbb_businesses_search` | `datasets-bbb-businesses-search` | `GET /datasets/bbb-businesses/search` | `q` (query str)
`category` (query str)
`state` (query str)
`city` (query str)
`rating` (query Literal['A+', 'A', 'A-', 'B+', 'B', 'B-', 'C+', 'C', 'C-', 'D+', 'D', 'D-', 'F'])
`min_rating_rank` (query int)
`accredited` (query bool)
`has_alerts` (query bool)
`alert_title` (query str)
`min_complaints` (query int)
`entity_type` (query str)
`run_id` (query str)
`sort` (query Literal['relevance', 'rating_desc', 'rating_asc', 'accredited_first', 'name_asc', 'years_in_business_desc', 'complaints_desc'])
`page` (query int)
`page_size` (query int) | `ApiKeyAuth` | `DatasetsBbbBusinessesSearchResponse` | | +| datasets | `datasets.bbb_businesses_search` | `datasets-bbb-businesses-search` | `GET /datasets/bbb-businesses/search` | `q` (query str)
`category` (query str)
`country` (query Literal['us', 'ca'])
`state` (query str)
`city` (query str)
`rating` (query Literal['A+', 'A', 'A-', 'B+', 'B', 'B-', 'C+', 'C', 'C-', 'D+', 'D', 'D-', 'F'])
`min_rating_rank` (query int)
`accredited` (query bool)
`has_alerts` (query bool)
`alert_title` (query str)
`min_complaints` (query int)
`entity_type` (query str)
`run_id` (query str)
`sort` (query Literal['relevance', 'rating_desc', 'rating_asc', 'accredited_first', 'name_asc', 'years_in_business_desc', 'complaints_desc'])
`page` (query int)
`page_size` (query int) | `ApiKeyAuth` | `DatasetsBbbBusinessesSearchResponse` | | | datasets | `datasets.bbb_scamtracker_reports_facets` | `datasets-bbb-scamtracker-reports-facets` | `GET /datasets/bbb-scamtracker-reports/facets` | `facet` (query Literal['scam_type', 'state', 'country'] required)
`q` (query str)
`scam_type` (query str)
`state` (query str)
`country` (query Literal['USA', 'CAN'])
`date_from` (query str)
`date_to` (query str)
`min_loss` (query float)
`max_loss` (query float) | `ApiKeyAuth` | `DatasetsBbbScamtrackerReportsFacetsResponse` | | | datasets | `datasets.bbb_scamtracker_reports_item` | `datasets-bbb-scamtracker-reports-item` | `GET /datasets/bbb-scamtracker-reports/items/{id}` | `id` (path str required) | `ApiKeyAuth` | `DatasetsBbbScamtrackerReportsItemResponse` | | | datasets | `datasets.bbb_scamtracker_reports_search` | `datasets-bbb-scamtracker-reports-search` | `GET /datasets/bbb-scamtracker-reports/search` | `q` (query str)
`scam_type` (query str)
`state` (query str)
`country` (query Literal['USA', 'CAN'])
`date_from` (query str)
`date_to` (query str)
`min_loss` (query float)
`max_loss` (query float)
`sort` (query Literal['relevance', 'reported_desc', 'reported_asc', 'loss_desc'])
`page` (query int)
`page_size` (query int) | `ApiKeyAuth` | `DatasetsBbbScamtrackerReportsSearchResponse` | | diff --git a/openapi/public.json b/openapi/public.json index 938471c..5c5e0e5 100644 --- a/openapi/public.json +++ b/openapi/public.json @@ -14313,6 +14313,10 @@ "name": { "type": "string" }, + "notice": { + "example": "This business profile is under review.", + "type": "string" + }, "phone": { "type": "string" }, @@ -14322,6 +14326,10 @@ }, "type": "array" }, + "profile_under_review": { + "description": "ProfileUnderReview is true when BBB is updating the profile. The page\nthen shows \"This business profile is under review.\" (Notice) in place\nof the rating and accreditation, so Rating is \"NR\", RatingReasons holds\nBBB's sentence saying why, and \"accredited\" is left out of the JSON:\nthe page does not say, and false would be a claim BBB is not making.\nSeen live 2026-10-12. The state is BBB's and lasts until the review\nends, so asking again returns the same answer.", + "type": "boolean" + }, "rating": { "example": "A+", "type": "string" @@ -14520,6 +14528,10 @@ "example": 408, "type": "integer" }, + "notice": { + "example": "This profile is currently being updated. You will not be able to read any existing complaints at this time, but you may file a complaint.", + "type": "string" + }, "page": { "description": "Page is the page of the complaint list this response holds. TotalPages\nis the last page BBB's own pager links to; it is omitted when BBB\nrenders no list (no complaints, or a page past the end). BBB lists\nfewer complaints than TotalComplaints counts, so TotalPages can be\nsmaller than TotalComplaints/10. HasMore is true while Page is before\nTotalPages.", "example": 1, @@ -14529,6 +14541,10 @@ "example": "in the last 3 years.", "type": "string" }, + "profile_under_review": { + "description": "ProfileUnderReview is true when BBB is updating the profile and has\ntaken the complaint summary and list off the page for the duration.\nNotice is BBB's own sentence saying so. TotalComplaints and\nClosedLast12Months then come from the counts BBB still embeds in the\npage and stay zero when it embeds none; Complaints is empty and\nComplaintsListIncomplete is true. Seen live 2026-10-12; the state is\nBBB's, so asking again returns the same answer until the review ends.", + "type": "boolean" + }, "published_complaints": { "description": "PublishedComplaints is how many complaints BBB publishes details for,\nthe ones the pages list. HiddenComplaints is how many it counts in\nTotalComplaints without publishing them. Both come from the page's\nembedded state and are left out when it does not carry them.", "example": 3778, @@ -14977,6 +14993,11 @@ "example": "BBB Heart of Texas", "type": "string" }, + "news_url": { + "description": "The chapter's own newsroom; pass it to bbb-news or bbb-news-topics.", + "example": "https://www.bbb.org/local-bbb/bbb-serving-the-heart-of-texas/news", + "type": "string" + }, "offices": { "items": { "$ref": "#/definitions/bbbdirectory.Office" @@ -15023,6 +15044,11 @@ "example": "BBB Heart of Texas", "type": "string" }, + "news_url": { + "description": "The chapter's own newsroom; pass it to bbb-news or bbb-news-topics.", + "example": "https://www.bbb.org/local-bbb/bbb-serving-the-heart-of-texas/news", + "type": "string" + }, "offices": { "items": { "$ref": "#/definitions/bbbdirectory.Office" @@ -15325,6 +15351,8 @@ "type": "string" }, "id": { + "description": "BBB's id of the story or event.", + "example": "32431", "type": "string" }, "image": { @@ -15340,6 +15368,8 @@ "type": "string" }, "type": { + "description": "BBB's content type: Article for a story, or an event type for a record that carries event_start_date.", + "example": "Article", "type": "string" }, "url": { @@ -15350,28 +15380,64 @@ }, "bbbnews.NewsResponse": { "properties": { + "city": { + "description": "City slug; present for a city URL.", + "example": "san-francisco", + "type": "string" + }, "country": { + "description": "Country of the newsroom: us or ca.", + "enum": [ + "us", + "ca" + ], + "example": "us", "type": "string" }, "items": { + "description": "The stories on this page, in BBB's order.", "items": { "$ref": "#/definitions/bbbnews.NewsItem" }, "type": "array" }, + "local_bbb_id": { + "description": "Id of the local BBB chapter; present for a chapter URL.", + "example": "1116", + "type": "string" + }, + "local_bbb_name": { + "description": "Name of the local BBB chapter; present for a chapter URL.", + "type": "string" + }, "page": { + "description": "Page number that was returned, 1-based.", + "example": 2, "type": "integer" }, "page_size": { + "description": "BBB's page size. A page can hold fewer items than this with more pages after it.", + "example": 10, "type": "integer" }, "source_url": { + "description": "The newsroom URL that was read, page query included.", + "example": "https://www.bbb.org/us/news/scams?page=2", + "type": "string" + }, + "state": { + "description": "Two-letter state or province code; present for a state or city URL.", + "example": "ca", "type": "string" }, "topic": { + "description": "Topic name; present for a topic URL.", + "example": "Scams", "type": "string" }, "total": { + "description": "Number of stories in the list across all pages.", + "example": 279, "type": "integer" } }, @@ -15380,12 +15446,18 @@ "bbbnews.Topic": { "properties": { "name": { + "description": "Topic name as BBB shows it.", + "example": "Scams", "type": "string" }, "slug": { + "description": "Topic path segment.", + "example": "scams", "type": "string" }, "url": { + "description": "Newsroom URL of the topic in the requested scope; pass it to bbb-news.", + "example": "https://www.bbb.org/us/news/scams", "type": "string" } }, @@ -15393,13 +15465,41 @@ }, "bbbnews.TopicsResponse": { "properties": { + "city": { + "description": "City slug; present for a city URL.", + "example": "san-francisco", + "type": "string" + }, "country": { + "description": "Country of the newsroom: us or ca.", + "enum": [ + "us", + "ca" + ], + "example": "us", + "type": "string" + }, + "local_bbb_id": { + "description": "Id of the local BBB chapter; present for a chapter URL.", + "example": "1116", + "type": "string" + }, + "local_bbb_name": { + "description": "Name of the local BBB chapter; present for a chapter URL.", "type": "string" }, "source_url": { + "description": "The newsroom URL that was read.", + "example": "https://www.bbb.org/us/news", + "type": "string" + }, + "state": { + "description": "Two-letter state or province code; present for a state or city URL.", + "example": "ca", "type": "string" }, "topics": { + "description": "Every topic the page lists, in name order, the active one included.", "items": { "$ref": "#/definitions/bbbnews.Topic" }, @@ -41270,16 +41370,55 @@ "datasets.BBBBusinessesFacetResponse": { "properties": { "dataset": { + "description": "Dataset id, always bbb-businesses.", + "example": "bbb-businesses", "type": "string" }, "facet": { + "description": "The facet that was aggregated, as requested.", + "example": "city", "type": "string" }, + "has_more": { + "description": "True while another page exists; request offset + limit next.", + "example": true, + "type": "boolean" + }, "items": { + "description": "One page of values, most frequent first, ties in value order.", "items": { "$ref": "#/definitions/es.BBBBusinessesFacetItem" }, "type": "array" + }, + "limit": { + "description": "Values per page that was applied.", + "example": 50, + "type": "integer" + }, + "missing": { + "description": "Number of matching records that have no value for this facet.", + "example": 0, + "type": "integer" + }, + "offset": { + "description": "Number of values skipped.", + "example": 0, + "type": "integer" + }, + "total": { + "description": "Number of records matching the filters.", + "example": 44730, + "type": "integer" + }, + "total_values": { + "description": "Number of distinct values of the facet across all pages.", + "example": 1128, + "type": "integer" + }, + "values_truncated": { + "description": "Present and true only when the facet has more than 10000 values, the furthest offset can reach; add a filter such as state to split it. total_values is then an estimate.", + "type": "boolean" } }, "type": "object" @@ -53246,9 +53385,13 @@ "es.BBBBusinessesFacetItem": { "properties": { "count": { + "description": "Number of matching records with this value.", + "example": 3438, "type": "integer" }, "value": { + "description": "The facet value, to use as the matching search or facet filter. For the accredited and has_alerts facets it is 1 (true) or 0 (false).", + "example": "san-diego", "type": "string" } }, @@ -240877,7 +241020,7 @@ }, "/bbb/article": { "get": { - "description": "Returns published BBB article metadata, author names, body text, and useful links from a canonical public article URL.", + "description": "Returns published BBB article metadata, author names, body text, and useful links from a canonical public article URL. Returns 404 when BBB no longer has the article, including a story BBB has moved to one of its evergreen pages under /all/; the error then names the new address, and the answer is permanent.", "operationId": "bbb-article", "parameters": [ { @@ -241013,7 +241156,7 @@ "operationId": "bbb-business-complaints", "parameters": [ { - "description": "BBB business profile URL, from a bbb-search result's url or hq_profile_url", + "description": "BBB business profile URL, from a bbb-search result's url or hq_profile_url. A location URL ending in /addressId/ is accepted and read from the business profile", "in": "query", "name": "url", "required": true, @@ -241085,7 +241228,7 @@ "operationId": "bbb-business-more-info", "parameters": [ { - "description": "BBB business profile URL, from a bbb-search result's url or hq_profile_url", + "description": "BBB business profile URL, from a bbb-search result's url or hq_profile_url. A location URL ending in /addressId/ is accepted and read from the business profile", "in": "query", "name": "url", "required": true, @@ -241148,7 +241291,7 @@ "operationId": "bbb-business-reviews", "parameters": [ { - "description": "BBB business profile URL, from a bbb-search result's url or hq_profile_url", + "description": "BBB business profile URL, from a bbb-search result's url or hq_profile_url. A location URL ending in /addressId/ is accepted and read from the business profile", "in": "query", "name": "url", "required": true, @@ -241480,11 +241623,11 @@ }, "/bbb/news": { "get": { - "description": "Returns one page of public BBB newsroom stories from a canonical US or Canada newsroom URL. Event dates and links are preserved when present.", + "description": "Returns one page of public BBB newsroom stories from a canonical BBB newsroom URL. Three scopes are accepted, each with an optional topic: the US or Canada newsroom (/us/news), a state, province or city newsroom (/us/ca/news, /us/ca/san-francisco/news), and one local BBB chapter's own newsroom (/local-bbb//news, the news_url returned by bbb-local-bbbs and bbb-local-bbb). The list is whatever BBB shows on that page: a city or chapter whose local BBB publishes its own stories returns those, and other cities, other chapters and the state pages checked so far return the same list as the country newsroom, so compare total and the first items with the country newsroom before treating a list as local. A chapter URL also returns local_bbb_id and local_bbb_name. Event dates and links are preserved when present.", "operationId": "bbb-news", "parameters": [ { - "description": "Canonical BBB newsroom or topic page URL; include page=N for pagination", + "description": "Canonical https://www.bbb.org newsroom URL: /us/news or /ca/news; ///news or ////news with country us or ca, the two-letter region code from bbb-regions and the city slug from a business profile URL; or a chapter's news_url from bbb-local-bbbs. Append a topic segment from bbb-news-topics to narrow it and ?page=N (1 to 1000) to page; no other query key is accepted", "in": "query", "name": "url", "required": true, @@ -241546,11 +241689,11 @@ }, "/bbb/news/topics": { "get": { - "description": "Returns the complete topic navigation shown by a US or Canada BBB newsroom page, including its active topic.", + "description": "Returns the complete topic navigation shown by a BBB newsroom page, including its active topic. The page can be the US or Canada newsroom, a state, province or city newsroom, or one local BBB chapter's newsroom; the returned topic URLs stay in that scope, and a chapter has its own topic set.", "operationId": "bbb-news-topics", "parameters": [ { - "description": "Canonical BBB newsroom page URL", + "description": "Canonical https://www.bbb.org newsroom URL, optionally with a topic segment: /us/news or /ca/news; ///news or ////news with country us or ca, the two-letter region code from bbb-regions and the city slug from a business profile URL; or a chapter's news_url from bbb-local-bbbs", "in": "query", "name": "url", "required": true, @@ -270278,7 +270421,7 @@ "consumes": [ "application/json" ], - "description": "Returns aggregate Airbnb short-term-rental market rollups from the dataset id enum value `airbnb-markets`. Aggregate-only: each row is a market cell, never an individual listing. Thin cells are suppressed. group_by enum: `country`, `market`, `admin1` (top subdivision), `locality` (settlement), `room_type` (`entire_place`/`private_room`/`hotel`/`shared_room`), `property_type` (Airbnb's canonical listing type from the detail page). `admin1`, `locality`, `room_type` and `property_type` are enrichment-derived and stay empty until their coverage is high enough to be reliable. Each cell also carries `median_price_usd`, the median nightly price converted to USD via an approximate dated FX snapshot, for cross-country comparison (combine with `group_by=room_type` for median price by room type); `guest_favorite_pct`, the share of listings carrying the Guest Favorite badge (an observed lower bound, like `superhost_pct`); and `avg_person_capacity`, the average guests a listing sleeps over the detail-page-enriched sample. Sort enum: `listings_desc`, `superhost_pct_desc`, `rating_desc`, `key_asc`.", + "description": "Returns aggregate Airbnb short-term-rental market rollups from the dataset id enum value `airbnb-markets`. Aggregate-only: each row is a market cell, never an individual listing. Thin cells are suppressed. group_by enum: `country`, `market`, `admin1` (top subdivision), `locality` (settlement), `room_type` (`entire_place`/`private_room`/`hotel`/`shared_room`), `property_type` (Airbnb's canonical listing type from the detail page). `admin1`, `locality`, `room_type` and `property_type` are enrichment-derived and stay empty until their coverage is high enough to be reliable. Each cell also carries `median_price_usd`, the median nightly price converted to USD via an approximate dated FX snapshot, for cross-country comparison (combine with `group_by=room_type` for median price by room type); `guest_favorite_pct`, the share of listings carrying the Guest Favorite badge (an observed lower bound, like `superhost_pct`); and `avg_person_capacity`, the average guests a listing sleeps over the detail-page-enriched sample. Sort enum: `listings_desc`, `superhost_pct_desc`, `rating_desc`, `key_asc`. Billing: this search costs 1 credit per record returned, with a minimum of 2 (an empty result costs 2, a full page of 100 costs 100).", "operationId": "datasets-airbnb-markets-search", "parameters": [ { @@ -270582,7 +270725,7 @@ "consumes": [ "application/json" ], - "description": "Searches the crawled public Apple Podcasts show catalog stored in a search index. One row per show. Discovered from a country x genre x collection chart grid and a search-term sweep — not a full catalog of every Apple Podcasts show. Sort enum: `relevance`, `popularity`, `track_count_desc`, `release_desc`, `title_asc`.", + "description": "Searches the crawled public Apple Podcasts show catalog stored in a search index. One row per show. Discovered from a country x genre x collection chart grid and a search-term sweep — not a full catalog of every Apple Podcasts show. Sort enum: `relevance`, `popularity`, `track_count_desc`, `release_desc`, `title_asc`. Billing: this search costs 1 credit per record returned, with a minimum of 2 (an empty result costs 2, a full page of 100 costs 100).", "operationId": "datasets-apple-podcasts-shows-search", "parameters": [ { @@ -270698,7 +270841,7 @@ "consumes": [ "application/json" ], - "description": "Searches daily top-chart snapshots scraped from the iOS App Store and Google Play, stored in a search index (one document per chart × snapshot × rank). With no `date` the latest snapshot is returned (today's chart); pair `app_id` with `sort=date_desc` for an app's rank over time. Store enum: `ios`, `android`. Chart type enum: `top_free`, `top_paid`, `top_grossing`, `new`. Platform enum (Apple device platforms, ios charts only): `phone`, `pad`, `mac`. Sort enum: `rank`, `rank_desc`, `date_desc`.", + "description": "Searches daily top-chart snapshots scraped from the iOS App Store and Google Play, stored in a search index (one document per chart × snapshot × rank). With no `date` the latest snapshot is returned (today's chart); pair `app_id` with `sort=date_desc` for an app's rank over time. Store enum: `ios`, `android`. Chart type enum: `top_free`, `top_paid`, `top_grossing`, `new`. Platform enum (Apple device platforms, ios charts only): `phone`, `pad`, `mac`. Sort enum: `rank`, `rank_desc`, `date_desc`. Billing: this search costs 1 credit per record returned, with a minimum of 2 (an empty result costs 2, a full page of 100 costs 100).", "operationId": "datasets-apps-charts-search", "parameters": [ { @@ -270834,7 +270977,7 @@ "consumes": [ "application/json" ], - "description": "Searches user reviews scraped from the iOS App Store and Google Play, stored in a search index (one document per review). Store enum: `ios`, `android`. Sort enum: `recent`, `score_desc`, `score_asc`, `helpful_desc`.", + "description": "Searches user reviews scraped from the iOS App Store and Google Play, stored in a search index (one document per review). Store enum: `ios`, `android`. Sort enum: `recent`, `score_desc`, `score_asc`, `helpful_desc`. Billing: this search costs 1 credit per record returned, with a minimum of 2 (an empty result costs 2, a full page of 100 costs 100).", "operationId": "datasets-apps-reviews-search", "parameters": [ { @@ -270941,7 +271084,7 @@ "consumes": [ "application/json" ], - "description": "Searches resolved iOS App Store and Google Play apps stored in a search index. Store enum: `ios`, `android`, `both`. Platform enum (Apple device platforms, ios records only): `phone`, `pad`, `mac`, `tv`, `watch`, `vision`. Sort enum: `relevance`, `rating_desc`, `reviews_desc`, `installs_desc`, `updated_at_desc`, `popularity_desc`.", + "description": "Searches resolved iOS App Store and Google Play apps stored in a search index. Store enum: `ios`, `android`, `both`. Platform enum (Apple device platforms, ios records only): `phone`, `pad`, `mac`, `tv`, `watch`, `vision`. Sort enum: `relevance`, `rating_desc`, `reviews_desc`, `installs_desc`, `updated_at_desc`, `popularity_desc`. Billing: this search costs 1 credit per record returned, with a minimum of 2 (an empty result costs 2, a full page of 100 costs 100).", "operationId": "datasets-apps-search", "parameters": [ { @@ -271079,12 +271222,13 @@ "consumes": [ "application/json" ], - "description": "Returns distribution counts over the BBB businesses index (dataset id enum value `bbb-businesses`), honoring the same filters as search. Facet enum: `category`, `state`, `city`, `rating`, `accredited`, `entity_type`, `run_id`, `alert_title`, `has_alerts`.", + "description": "Returns the values of one field of the BBB businesses index (dataset id enum value `bbb-businesses`) with the number of records for each, honoring the same filters as search. Facet enum: `country`, `category`, `state`, `city`, `rating`, `accredited`, `entity_type`, `run_id`, `alert_title`, `has_alerts`. country enum: `us`, `ca`. Values come most frequent first, 50 per page by default; page through all of them with `limit` (up to 1000) and `offset` while `has_more` is true. The response also returns `total` (records matching the filters), `total_values` (distinct values) and `missing` (records with no value for the facet), so the counts can be checked against the total. Values of the `accredited` and `has_alerts` facets are `1` (true) and `0` (false). Use it to split a search that would exceed 10,000 records: `facet=state` lists every state and province, and `facet=city` with a `state` filter lists every city in it.", "operationId": "datasets-bbb-businesses-facets", "parameters": [ { - "description": "Facet enum: category, state, city, rating, accredited, entity_type, run_id, alert_title, has_alerts", + "description": "Facet enum: country, category, state, city, rating, accredited, entity_type, run_id, alert_title, has_alerts", "enum": [ + "country", "category", "state", "city", @@ -271101,6 +271245,18 @@ "type": "string", "x-example": "category" }, + { + "description": "Values per page, 1 to 1000, defaults to 50", + "in": "query", + "name": "limit", + "type": "integer" + }, + { + "description": "Values to skip, 0 or greater, defaults to 0; offset + limit must be <= 10000. Request offset + limit next while has_more is true", + "in": "query", + "name": "offset", + "type": "integer" + }, { "description": "Full-text match on the business name/category, max 256 characters", "in": "query", @@ -271108,19 +271264,29 @@ "type": "string" }, { - "description": "Exact category filter", + "description": "Exact category filter, e.g. Plumber (case-sensitive). Use the values returned by facet=category", "in": "query", "name": "category", "type": "string" }, { - "description": "Exact 2-letter state/province filter", + "description": "Country filter, parsed from the profile URL (case-insensitive). Enum: us, ca", + "enum": [ + "us", + "ca" + ], + "in": "query", + "name": "country", + "type": "string" + }, + { + "description": "Exact 2-letter state or province code as in the profile URL, e.g. tx (case-insensitive). Use the values returned by facet=state", "in": "query", "name": "state", "type": "string" }, { - "description": "Exact city filter", + "description": "Exact city slug as in the profile URL, e.g. san-diego (case-insensitive). Use the values returned by facet=city with a state filter", "in": "query", "name": "city", "type": "string" @@ -271147,37 +271313,43 @@ "type": "string" }, { - "description": "Accreditation filter", + "description": "Numeric floor against the denormalized rating rank (A+=12 down to F=0), e.g. 10 for 'A- and above'", + "in": "query", + "name": "min_rating_rank", + "type": "integer" + }, + { + "description": "Accreditation filter; true keeps only accredited businesses, false only the others", "in": "query", "name": "accredited", "type": "boolean" }, { - "description": "BBB-alert filter", + "description": "BBB-alert filter; true keeps businesses whose profile carries at least one BBB alert, false keeps refreshed records with none", "in": "query", "name": "has_alerts", "type": "boolean" }, { - "description": "Exact BBB alert title filter", + "description": "Exact BBB alert title filter, e.g. Pattern of Complaint (case-sensitive). Use the values returned by facet=alert_title", "in": "query", "name": "alert_title", "type": "string" }, { - "description": "Floor against total_complaints, 0 or greater", + "description": "Floor against total_complaints (BBB's three-year complaint count), 0 or greater", "in": "query", "name": "min_complaints", "type": "integer" }, { - "description": "Exact entity-type filter", + "description": "Exact entity-type filter, e.g. Limited Liability Company (LLC) (case-sensitive). Use the values returned by facet=entity_type", "in": "query", "name": "entity_type", "type": "string" }, { - "description": "Exact crawl run id filter", + "description": "Exact crawl run id filter, e.g. bbb-20260906. Use the values returned by facet=run_id", "in": "query", "name": "run_id", "type": "string" @@ -271291,7 +271463,7 @@ "consumes": [ "application/json" ], - "description": "Searches the BBB (Better Business Bureau) businesses index (dataset id enum value `bbb-businesses`) — business profiles crawled from bbb.org's own search/category-browse pages: computed A+-F letter-grade rating, paid-accreditation status, category, contact info, business details, operating hours, and products/services. Complaints, full reviews, and the full \"reasons for rating\"/service-area detail are NOT embedded here; each record instead carries complaints_url/reviews_url/more_info_url pointing at the live bbb-business-complaints/bbb-business-reviews/bbb-business-more-info endpoints for on-demand lookup. rating enum: `A+`, `A`, `A-`, `B+`, `B`, `B-`, `C+`, `C`, `C-`, `D+`, `D`, `D-`, `F`. Each record also stores BBB's complaint and review counts (total_complaints and related fields) and the BBB alerts on the profile (has_alerts, alert_titles, alerts[] with full text), so businesses with complaints or with a given alert can be listed without calling the live endpoints; these fields are filled as records are re-crawled and are absent on a record not refreshed since they were added. sort enum: `relevance`, `rating_desc`, `rating_asc`, `accredited_first`, `name_asc`, `years_in_business_desc`, `complaints_desc`. Billing: this search costs 1 credit per record returned, with a minimum of 2 (an empty result costs 2, a full page of 100 costs 100); the item and facets endpoints cost 1.", + "description": "Searches the BBB (Better Business Bureau) businesses index (dataset id enum value `bbb-businesses`) — business profiles crawled from bbb.org's own search/category-browse pages: computed A+-F letter-grade rating, paid-accreditation status, category, contact info, business details, operating hours, and products/services. Complaints, full reviews, and the full \"reasons for rating\"/service-area detail are NOT embedded here; each record instead carries complaints_url/reviews_url/more_info_url pointing at the live bbb-business-complaints/bbb-business-reviews/bbb-business-more-info endpoints for on-demand lookup. rating enum: `A+`, `A`, `A-`, `B+`, `B`, `B-`, `C+`, `C`, `C-`, `D+`, `D`, `D-`, `F`. Each record also stores BBB's complaint and review counts (total_complaints and related fields) and the BBB alerts on the profile (has_alerts, alert_titles, alerts[] with full text), so businesses with complaints or with a given alert can be listed without calling the live endpoints; these fields are filled as records are re-crawled and are absent on a record not refreshed since they were added. sort enum: `relevance`, `rating_desc`, `rating_asc`, `accredited_first`, `name_asc`, `years_in_business_desc`, `complaints_desc`. country enum: `us`, `ca`. A query returns at most 10,000 records; to read more, split it with the values and counts from the facets endpoint (for example one request per state, then per city) so each part stays under that limit. Billing: this search costs 1 credit per record returned, with a minimum of 2 (an empty result costs 2, a full page of 100 costs 100); the item and facets endpoints cost 1.", "operationId": "datasets-bbb-businesses-search", "parameters": [ { @@ -271301,19 +271473,29 @@ "type": "string" }, { - "description": "Exact category filter, e.g. Plumber. Use the values returned by facets?facet=category", + "description": "Exact category filter, e.g. Plumber (case-sensitive). Use the values returned by facets?facet=category", "in": "query", "name": "category", "type": "string" }, { - "description": "Exact 2-letter state/province filter, parsed from the profile URL, e.g. tx", + "description": "Country filter, parsed from the profile URL (case-insensitive). Enum: us, ca", + "enum": [ + "us", + "ca" + ], + "in": "query", + "name": "country", + "type": "string" + }, + { + "description": "Exact 2-letter state or province code as in the profile URL, e.g. tx (case-insensitive). Use the values returned by facets?facet=state", "in": "query", "name": "state", "type": "string" }, { - "description": "Exact city filter, parsed from the profile URL", + "description": "Exact city slug as in the profile URL, e.g. san-diego (case-insensitive). Use the values returned by facets?facet=city with a state filter; the same slug exists in several states, so send state with it", "in": "query", "name": "city", "type": "string" @@ -271346,7 +271528,7 @@ "type": "integer" }, { - "description": "Accreditation filter; true keeps only accredited businesses", + "description": "Accreditation filter; true keeps only accredited businesses, false only the others", "in": "query", "name": "accredited", "type": "boolean" @@ -271370,13 +271552,13 @@ "type": "integer" }, { - "description": "Exact entity-type filter, e.g. Limited Liability Company (LLC)", + "description": "Exact entity-type filter, e.g. Limited Liability Company (LLC) (case-sensitive). Use the values returned by facets?facet=entity_type", "in": "query", "name": "entity_type", "type": "string" }, { - "description": "Exact crawl run id filter", + "description": "Exact crawl run id filter, e.g. bbb-20260906. Use the values returned by facets?facet=run_id", "in": "query", "name": "run_id", "type": "string" @@ -271985,7 +272167,7 @@ "consumes": [ "application/json" ], - "description": "Searches theatrical box-office records from public Box Office Mojo charts and title pages, stored in a search index. Filter by title id, year, franchise/brand/genre, gross band, lifetime top-1000 membership, hydration status, and worldwide/domestic gross ranges. Sort enum: `relevance`, `worldwide_desc`, `domestic_desc`, `peak_worldwide_desc`, `lifetime_rank_asc`, `year_desc`, `year_asc`. gross_band enum: `under_50m`, `50_100m`, `100_250m`, `250_500m`, `500m_1b`, `over_1b`.", + "description": "Searches theatrical box-office records from public Box Office Mojo charts and title pages, stored in a search index. Filter by title id, year, franchise/brand/genre, gross band, lifetime top-1000 membership, hydration status, and worldwide/domestic gross ranges. Sort enum: `relevance`, `worldwide_desc`, `domestic_desc`, `peak_worldwide_desc`, `lifetime_rank_asc`, `year_desc`, `year_asc`. gross_band enum: `under_50m`, `50_100m`, `100_250m`, `250_500m`, `500m_1b`, `over_1b`. Billing: this search costs 1 credit per record returned, with a minimum of 2 (an empty result costs 2, a full page of 100 costs 100).", "operationId": "datasets-boxofficemojo-search", "parameters": [ { @@ -272596,7 +272778,7 @@ }, "/datasets/chrome-extensions/search": { "get": { - "description": "Searches stored Chrome Web Store item snapshots. Item type enum: `extension`, `theme`, `app`, `unknown`. Sort enum: `relevance`, `users_desc`, `rating_desc`, `reviews_desc`, `updated_desc`, `trending_desc`. Status enum: `active`, `removed`. Manifest version enum: `2`, `3`.", + "description": "Searches stored Chrome Web Store item snapshots. Item type enum: `extension`, `theme`, `app`, `unknown`. Sort enum: `relevance`, `users_desc`, `rating_desc`, `reviews_desc`, `updated_desc`, `trending_desc`. Status enum: `active`, `removed`. Manifest version enum: `2`, `3`. Billing: this search costs 1 credit per record returned, with a minimum of 2 (an empty result costs 2, a full page of 100 costs 100).", "operationId": "datasets-chrome-extensions-search", "parameters": [ { @@ -272760,7 +272942,7 @@ }, "/datasets/chrome-extensions/trending": { "get": { - "description": "Returns stored Chrome Web Store items ranked by the latest observed user and rating-count movement. Filters match the search endpoint; sort is fixed to `trending_desc`.", + "description": "Returns stored Chrome Web Store items ranked by the latest observed user and rating-count movement. Filters match the search endpoint; sort is fixed to `trending_desc`. Billing: this endpoint costs 1 credit per record returned, with a minimum of 2 (an empty result costs 2, a full page of 100 costs 100).", "operationId": "datasets-chrome-extensions-trending", "parameters": [ { @@ -272913,7 +273095,7 @@ "consumes": [ "application/json" ], - "description": "Searches TikTok creators stored in a search index (one document per creator), with follower counts, verified status, niche, and engagement. Deleted and private accounts are excluded by default; set `include_inactive=true` to include them for historical lookups. Sort enum: `followers_desc`, `engagement_desc`, `engagement_qualified_desc`, `likes_desc`, `relevance`. Coverage note: `followers_desc`, `likes_desc`, and `relevance` are backed by profile fields present across the full dataset; the post-level engagement metrics (`engagement_rate`, `avg_views`, and the nested `post_stats` object) and the `engagement_desc`/`engagement_qualified_desc` sorts are currently populated for a growing subset of creators, prioritizing the highest-reach accounts. Creators without these metrics are still returned but sort last under `engagement_desc` and omit those fields; `engagement_qualified_desc` excludes them outright (they cannot clear its floors). `engagement_desc` ranks by raw `engagement_rate` with no eligibility floor — it surfaces a real stale-record + ratio-by-design trap: an account whose last real post was years ago can still carry an unrealistic rate computed from a handful of old posts. `engagement_qualified_desc` is the same metric restricted to creators with a recent post (`last_post_at` within 90 days), a minimum reach (`avg_views >= 10000`) and sample size (`post_stats.sampled_posts >= 10`), and a sanity ceiling (`engagement_rate <= 50%`) — use this, not the raw sort, for a \"best engagement\" leaderboard. Sound fields: `post_stats.top_sounds` holds only a creator's FIVE most-used sounds from the sampled posts, ranked by use count with ties broken by lowest `music_id`, so it is a top-5 view and not the creator's full sound list; `post_stats.distinct_sounds` gives the true number of different sounds the sample used. Use each sound's `original` boolean to tell TikTok-generated original audio from catalogue tracks - do NOT infer it from the title, because TikTok localizes the original-audio label (`sonido original`, `som original`, `оригинальный звук`, and at least fifteen more), so a title match silently reclassifies original audio as named tracks.", + "description": "Searches TikTok creators stored in a search index (one document per creator), with follower counts, verified status, niche, and engagement. Deleted and private accounts are excluded by default; set `include_inactive=true` to include them for historical lookups. Sort enum: `followers_desc`, `engagement_desc`, `engagement_qualified_desc`, `likes_desc`, `relevance`. Coverage note: `followers_desc`, `likes_desc`, and `relevance` are backed by profile fields present across the full dataset; the post-level engagement metrics (`engagement_rate`, `avg_views`, and the nested `post_stats` object) and the `engagement_desc`/`engagement_qualified_desc` sorts are currently populated for a growing subset of creators, prioritizing the highest-reach accounts. Creators without these metrics are still returned but sort last under `engagement_desc` and omit those fields; `engagement_qualified_desc` excludes them outright (they cannot clear its floors). `engagement_desc` ranks by raw `engagement_rate` with no eligibility floor — it surfaces a real stale-record + ratio-by-design trap: an account whose last real post was years ago can still carry an unrealistic rate computed from a handful of old posts. `engagement_qualified_desc` is the same metric restricted to creators with a recent post (`last_post_at` within 90 days), a minimum reach (`avg_views >= 10000`) and sample size (`post_stats.sampled_posts >= 10`), and a sanity ceiling (`engagement_rate <= 50%`) — use this, not the raw sort, for a \"best engagement\" leaderboard. Sound fields: `post_stats.top_sounds` holds only a creator's FIVE most-used sounds from the sampled posts, ranked by use count with ties broken by lowest `music_id`, so it is a top-5 view and not the creator's full sound list; `post_stats.distinct_sounds` gives the true number of different sounds the sample used. Use each sound's `original` boolean to tell TikTok-generated original audio from catalogue tracks - do NOT infer it from the title, because TikTok localizes the original-audio label (`sonido original`, `som original`, `оригинальный звук`, and at least fifteen more), so a title match silently reclassifies original audio as named tracks. Billing: this search costs 1 credit per record returned, with a minimum of 2 (an empty result costs 2, a full page of 100 costs 100).", "operationId": "datasets-creators-search", "parameters": [ { @@ -273206,7 +273388,7 @@ "consumes": [ "application/json" ], - "description": "Returns stored DoorDash stores within a radius of a point, nearest first, from dataset id `doordash-stores`. lat, lon, and radius_m are required. Unlike the live /doordash/search endpoint (which is a proximity search capped at roughly five stores), this queries the stored directory, so it can return every discovered store in the radius. Coverage is best-effort rather than provably exhaustive: a store DoorDash never surfaced, or one not yet hydrated with coordinates, will not appear.", + "description": "Returns stored DoorDash stores within a radius of a point, nearest first, from dataset id `doordash-stores`. lat, lon, and radius_m are required. Unlike the live /doordash/search endpoint (which is a proximity search capped at roughly five stores), this queries the stored directory, so it can return every discovered store in the radius. Coverage is best-effort rather than provably exhaustive: a store DoorDash never surfaced, or one not yet hydrated with coordinates, will not appear. Billing: this endpoint costs 1 credit per record returned, with a minimum of 2 (an empty result costs 2, a full page of 100 costs 100).", "operationId": "datasets-doordash-stores-nearby", "parameters": [ { @@ -273325,7 +273507,7 @@ "consumes": [ "application/json" ], - "description": "Searches the DoorDash merchant-location directory (dataset id `doordash-stores`), built by grid-tiling the anonymous guest Explore feed and hydrating every discovered store. Identity and marketplace fields (name, marketplace tags, price range, ratings, DashPass eligibility) come from Explore; contact, address, and coordinates come from the hydration pass, so a store that has not been hydrated yet can appear without them. `display_status`, `display_asap_time`, `asap_available`, and `pickup_available` are a point-in-time observation of the PICKUP surface at crawl time, not a durable capability. Geographic coverage is best-effort: Explore caps at 40 stores per call with no pagination, so the census saturates a tile rather than draining it. Supports full-text `q`, `country`/`state`/`city`/`tag` filters, `dash_pass_only`, `min_price`/`max_price`/`min_rating`, `lat`/`lon`/`radius_m` radius filtering, and `sort` (relevance, rating, distance, distance_asc). `sort=relevance` ranks by text-match score when `q` is supplied; without `q` it sorts by store name. Use `pagination=cursor` and the returned `next_cursor` to enumerate beyond the 10,000-result offset window against a point-in-time snapshot.", + "description": "Searches the DoorDash merchant-location directory (dataset id `doordash-stores`), built by grid-tiling the anonymous guest Explore feed and hydrating every discovered store. Identity and marketplace fields (name, marketplace tags, price range, ratings, DashPass eligibility) come from Explore; contact, address, and coordinates come from the hydration pass, so a store that has not been hydrated yet can appear without them. `display_status`, `display_asap_time`, `asap_available`, and `pickup_available` are a point-in-time observation of the PICKUP surface at crawl time, not a durable capability. Geographic coverage is best-effort: Explore caps at 40 stores per call with no pagination, so the census saturates a tile rather than draining it. Supports full-text `q`, `country`/`state`/`city`/`tag` filters, `dash_pass_only`, `min_price`/`max_price`/`min_rating`, `lat`/`lon`/`radius_m` radius filtering, and `sort` (relevance, rating, distance, distance_asc). `sort=relevance` ranks by text-match score when `q` is supplied; without `q` it sorts by store name. Use `pagination=cursor` and the returned `next_cursor` to enumerate beyond the 10,000-result offset window against a point-in-time snapshot. Billing: this search costs 1 credit per record returned, with a minimum of 2 (an empty result costs 2, a full page of 100 costs 100).", "operationId": "datasets-doordash-stores-search", "parameters": [ { @@ -273723,7 +273905,7 @@ "consumes": [ "application/json" ], - "description": "Searches public Facebook Page contact records stored in a search index — website, email, phone, WhatsApp, category and like count, discovered through business-search enumeration, domain-scoped scans, and Wikidata seeding, then hydrated from each Page's public About tab. Sort enum: `relevance`, `likes_desc`, `likes_asc`, `hydrated_at_desc`, `hydrated_at_asc`.", + "description": "Searches public Facebook Page contact records stored in a search index — website, email, phone, WhatsApp, category and like count, discovered through business-search enumeration, domain-scoped scans, and Wikidata seeding, then hydrated from each Page's public About tab. Sort enum: `relevance`, `likes_desc`, `likes_asc`, `hydrated_at_desc`, `hydrated_at_asc`. Billing: this search costs 1 credit per record returned, with a minimum of 2 (an empty result costs 2, a full page of 100 costs 100).", "operationId": "datasets-facebook-pages-search", "parameters": [ { @@ -274197,7 +274379,7 @@ "consumes": [ "application/json" ], - "description": "Searches enriched GitHub users near a coordinate, sorted by distance, in dataset id enum value `github-users`. influence_tier enum: `nano`, `micro`, `mid`, `macro`, `mega`.", + "description": "Searches enriched GitHub users near a coordinate, sorted by distance, in dataset id enum value `github-users`. influence_tier enum: `nano`, `micro`, `mid`, `macro`, `mega`. Billing: this endpoint costs 1 credit per record returned, with a minimum of 2 (an empty result costs 2, a full page of 100 costs 100).", "operationId": "datasets-github-users-nearby", "parameters": [ { @@ -274307,7 +274489,7 @@ "consumes": [ "application/json" ], - "description": "Searches enriched public GitHub user profiles stored in a search index. influence_tier enum: `nano`, `micro`, `mid`, `macro`, `mega`. Sort enum: `relevance`, `rank_score_desc`, `followers_desc`, `account_age_desc`, `account_age_asc`, `distance_asc`.", + "description": "Searches enriched public GitHub user profiles stored in a search index. influence_tier enum: `nano`, `micro`, `mid`, `macro`, `mega`. Sort enum: `relevance`, `rank_score_desc`, `followers_desc`, `account_age_desc`, `account_age_asc`, `distance_asc`. Billing: this search costs 1 credit per record returned, with a minimum of 2 (an empty result costs 2, a full page of 100 costs 100).", "operationId": "datasets-github-users-search", "parameters": [ { @@ -274711,7 +274893,7 @@ "consumes": [ "application/json" ], - "description": "Searches the crawled public Goodreads author profile index. Authors are discovered as a byproduct of the books crawl (every credited book contributor, plus the genre/search/list seed sources) — not a full catalog. Sort enum: `relevance`, `rating_desc`, `reviews_desc`, `name_asc`.", + "description": "Searches the crawled public Goodreads author profile index. Authors are discovered as a byproduct of the books crawl (every credited book contributor, plus the genre/search/list seed sources) — not a full catalog. Sort enum: `relevance`, `rating_desc`, `reviews_desc`, `name_asc`. Billing: this search costs 1 credit per record returned, with a minimum of 2 (an empty result costs 2, a full page of 100 costs 100).", "operationId": "datasets-goodreads-authors-search", "parameters": [ { @@ -275053,7 +275235,7 @@ "consumes": [ "application/json" ], - "description": "Searches the crawled public Goodreads book catalog stored in a search index. Discovered from curated Listopia \"best of\" lists, a search-term sweep, and author bibliography expansion — not a full catalog. Sort enum: `relevance`, `rating_desc`, `reviews_desc`, `publication_desc`, `publication_asc`, `pages_desc`, `pages_asc`, `title_asc`.", + "description": "Searches the crawled public Goodreads book catalog stored in a search index. Discovered from curated Listopia \"best of\" lists, a search-term sweep, and author bibliography expansion — not a full catalog. Sort enum: `relevance`, `rating_desc`, `reviews_desc`, `publication_desc`, `publication_asc`, `pages_desc`, `pages_asc`, `title_asc`. Billing: this search costs 1 credit per record returned, with a minimum of 2 (an empty result costs 2, a full page of 100 costs 100).", "operationId": "datasets-goodreads-books-search", "parameters": [ { @@ -275484,7 +275666,7 @@ "consumes": [ "application/json" ], - "description": "Searches stored Google Maps businesses near a coordinate in dataset id enum value `google-map-businesses`. `category` is the exact Google Maps category label returned for the business locale; it can be localized, non-ASCII, or contain punctuation, so use the category facet to discover exact filter values. A `rating` of `null` means no aggregate rating is available. A `review_count` of `null` means Google did not return a count; numeric `0` means Google confirmed zero reviews. `min_rating` above 0 excludes unrated businesses.", + "description": "Searches stored Google Maps businesses near a coordinate in dataset id enum value `google-map-businesses`. `category` is the exact Google Maps category label returned for the business locale; it can be localized, non-ASCII, or contain punctuation, so use the category facet to discover exact filter values. A `rating` of `null` means no aggregate rating is available. A `review_count` of `null` means Google did not return a count; numeric `0` means Google confirmed zero reviews. `min_rating` above 0 excludes unrated businesses. Billing: this endpoint costs 1 credit per record returned, with a minimum of 2 (an empty result costs 2, a full page of 100 costs 100).", "operationId": "datasets-google-map-businesses-nearby", "parameters": [ { @@ -275587,7 +275769,7 @@ "consumes": [ "application/json" ], - "description": "Searches Google Maps business records stored in a search index. Sort enum: `relevance`, `updated_at_desc`, `rating_desc`, `review_count_desc`, `distance_asc`. `category` is the exact Google Maps category label returned for the business locale; it can be localized, non-ASCII, or contain punctuation, so use the category facet to discover exact filter values. A `rating` of `null` means no aggregate rating is available. A `review_count` of `null` means Google did not return a count; numeric `0` means Google confirmed zero reviews. `rating_desc` sorts unrated businesses last, and `min_rating` above 0 excludes them. Use `has_geo=false` to isolate locationless service-area businesses (which have a `null` `geo`). A `permanently_closed` of `true` means Google marks the business permanently closed; `false` means a crawl confirmed it does not; `null` means the business has not been status-checked since capture shipped on 2026-08-31 and is UNKNOWN, not open — so any total computed from this dataset includes an unknown number of closed businesses. Use `permanently_closed=false` to exclude the confirmed-closed ones.", + "description": "Searches Google Maps business records stored in a search index. Sort enum: `relevance`, `updated_at_desc`, `rating_desc`, `review_count_desc`, `distance_asc`. `category` is the exact Google Maps category label returned for the business locale; it can be localized, non-ASCII, or contain punctuation, so use the category facet to discover exact filter values. A `rating` of `null` means no aggregate rating is available. A `review_count` of `null` means Google did not return a count; numeric `0` means Google confirmed zero reviews. `rating_desc` sorts unrated businesses last, and `min_rating` above 0 excludes them. Use `has_geo=false` to isolate locationless service-area businesses (which have a `null` `geo`). A `permanently_closed` of `true` means Google marks the business permanently closed; `false` means a crawl confirmed it does not; `null` means the business has not been status-checked since capture shipped on 2026-08-31 and is UNKNOWN, not open — so any total computed from this dataset includes an unknown number of closed businesses. Use `permanently_closed=false` to exclude the confirmed-closed ones. Billing: this search costs 1 credit per record returned, with a minimum of 2 (an empty result costs 2, a full page of 100 costs 100).", "operationId": "datasets-google-map-businesses-search", "parameters": [ { @@ -276065,7 +276247,7 @@ "consumes": [ "application/json" ], - "description": "Searches monthly Redfin housing-market statistics per region and property type since 2012, joined to Census ACS income for affordability metrics. region_type enum: `national`, `metro`, `county`, `city`, `zip`. property_type enum: `All Residential`, `Single Family Residential`, `Condo/Co-op`, `Townhouse`, `Multi-Family (2-4 Unit)`, `Single Units Only`. Sort enum: `relevance`, `price_desc`, `price_asc`, `list_price_desc`, `list_price_asc`, `price_to_income_desc`, `price_to_income_asc`, `salary_to_buy_desc`, `salary_to_buy_asc`, `dom_asc`, `dom_desc`, `inventory_desc`, `homes_sold_desc`, `period_desc`. Use `latest=true` for the most recent period per region series.", + "description": "Searches monthly Redfin housing-market statistics per region and property type since 2012, joined to Census ACS income for affordability metrics. region_type enum: `national`, `metro`, `county`, `city`, `zip`. property_type enum: `All Residential`, `Single Family Residential`, `Condo/Co-op`, `Townhouse`, `Multi-Family (2-4 Unit)`, `Single Units Only`. Sort enum: `relevance`, `price_desc`, `price_asc`, `list_price_desc`, `list_price_asc`, `price_to_income_desc`, `price_to_income_asc`, `salary_to_buy_desc`, `salary_to_buy_asc`, `dom_asc`, `dom_desc`, `inventory_desc`, `homes_sold_desc`, `period_desc`. Use `latest=true` for the most recent period per region series. Billing: this search costs 1 credit per record returned, with a minimum of 2 (an empty result costs 2, a full page of 100 costs 100).", "operationId": "datasets-housing-markets-search", "parameters": [ { @@ -276532,7 +276714,7 @@ "consumes": [ "application/json" ], - "description": "Searches public Instagram user profiles stored in a search index. Sort enum: `relevance`, `followers_desc`, `followers_asc`, `crawled_at_desc`, `crawled_at_asc`, `created_at_desc`, `created_at_asc`.", + "description": "Searches public Instagram user profiles stored in a search index. Sort enum: `relevance`, `followers_desc`, `followers_asc`, `crawled_at_desc`, `crawled_at_asc`, `created_at_desc`, `created_at_asc`. Billing: this search costs 1 credit per record returned, with a minimum of 2 (an empty result costs 2, a full page of 100 costs 100).", "operationId": "datasets-instagram-users-search", "parameters": [ { @@ -276704,7 +276886,7 @@ "consumes": [ "application/json" ], - "description": "Searches the discovered company board registry — which companies are hiring, on which ATS (or, for the 5 single-company big-tech providers, which platform), with how many open roles. Set sponsors_visa=true to keep companies with certified employer filings in recent public U.S. Department of Labor LCA disclosure data. This is company-level historical evidence, not a guarantee for a specific role or candidate. provider enum: `greenhouse`, `lever`, `ashby`, `workday`, `smartrecruiters`, `workable`, `recruitee`, `rippling`, `personio`, `teamtailor`, `oracle`, `ukg`, `icims`, `eightfold`, `gem`, `pinpoint`, `amazon-jobs`, `apple-jobs`, `google-jobs`, `meta-jobs`, `tesla-jobs`. status enum: `active`, `empty`, `gone`, `blocked`, `pending`, `invalid`. sort enum: `open_desc`, `company_asc`, `crawled_desc`.", + "description": "Searches the discovered company board registry — which companies are hiring, on which ATS (or, for the 5 single-company big-tech providers, which platform), with how many open roles. Set sponsors_visa=true to keep companies with certified employer filings in recent public U.S. Department of Labor LCA disclosure data. This is company-level historical evidence, not a guarantee for a specific role or candidate. provider enum: `greenhouse`, `lever`, `ashby`, `workday`, `smartrecruiters`, `workable`, `recruitee`, `rippling`, `personio`, `teamtailor`, `oracle`, `ukg`, `icims`, `eightfold`, `gem`, `pinpoint`, `amazon-jobs`, `apple-jobs`, `google-jobs`, `meta-jobs`, `tesla-jobs`. status enum: `active`, `empty`, `gone`, `blocked`, `pending`, `invalid`. sort enum: `open_desc`, `company_asc`, `crawled_desc`. Billing: this endpoint costs 1 credit per 10 records returned, rounded up, with a minimum of 1 (up to 10 records cost 1, a full page of 100 costs 10).", "operationId": "datasets-jobs-companies", "parameters": [ { @@ -276994,7 +277176,7 @@ "consumes": [ "application/json" ], - "description": "Finds crawled job postings within `radius_km` of a `lat`/`lon`, nearest first. Only geocoded postings participate (the geo-enrich worker back-fills coordinates from each posting's location). Open roles only by default. provider enum: `greenhouse`, `lever`, `ashby`, `workday`, `smartrecruiters`, `workable`, `recruitee`, `rippling`, `personio`, `teamtailor`, `oracle`, `ukg`, `icims`, `eightfold`, `gem`, `pinpoint`, `amazon-jobs`, `apple-jobs`, `google-jobs`, `meta-jobs`, `tesla-jobs`.", + "description": "Finds crawled job postings within `radius_km` of a `lat`/`lon`, nearest first. Only geocoded postings participate (the geo-enrich worker back-fills coordinates from each posting's location). Open roles only by default. provider enum: `greenhouse`, `lever`, `ashby`, `workday`, `smartrecruiters`, `workable`, `recruitee`, `rippling`, `personio`, `teamtailor`, `oracle`, `ukg`, `icims`, `eightfold`, `gem`, `pinpoint`, `amazon-jobs`, `apple-jobs`, `google-jobs`, `meta-jobs`, `tesla-jobs`. Billing: this endpoint costs 1 credit per 10 records returned, rounded up, with a minimum of 1 (up to 10 records cost 1, a full page of 100 costs 10).", "operationId": "datasets-jobs-nearby", "parameters": [ { @@ -277106,7 +277288,7 @@ "consumes": [ "application/json" ], - "description": "Full-text + faceted search over every job posting crawled from every discovered company ATS board (Greenhouse, Lever, Ashby, Workday, SmartRecruiters, Workable, Recruitee, Rippling, Personio, Teamtailor, Oracle, UKG, iCIMS, Eightfold, Gem, Pinpoint) plus 5 single-company big-tech careers platforms (Amazon, Apple, Google, Meta, Tesla). Open roles only by default (set include_closed=true for historical/filled roles). Salary is parsed from a structured field when the provider has one, or from an explicit pay figure stated in the description otherwise, so coverage varies by posting rather than by provider; min_salary/max_salary filter on it and require salary_currency, since comparing raw compensation numbers across currencies is meaningless. Location is also exposed as structured city/state/country fields alongside the free-text location string, so city/state/country filter on an exact match of those parsed components rather than substring-matching the display string. job_family is an exact level-2 ISCO family label assigned from ESCO occupation evidence; ambiguous postings remain unclassified and do not match that filter. employment_type is never populated for google-jobs/meta-jobs, and posted_at (so sort=posted_desc) is never populated for meta-jobs/tesla-jobs -- their upstream APIs expose no such field. provider enum: `greenhouse`, `lever`, `ashby`, `workday`, `smartrecruiters`, `workable`, `recruitee`, `rippling`, `personio`, `teamtailor`, `oracle`, `ukg`, `icims`, `eightfold`, `gem`, `pinpoint`, `amazon-jobs`, `apple-jobs`, `google-jobs`, `meta-jobs`, `tesla-jobs`. workplace_type enum: `onsite`, `hybrid`, `remote`. sort enum: `relevance`, `posted_desc`, `company_asc`.", + "description": "Full-text + faceted search over every job posting crawled from every discovered company ATS board (Greenhouse, Lever, Ashby, Workday, SmartRecruiters, Workable, Recruitee, Rippling, Personio, Teamtailor, Oracle, UKG, iCIMS, Eightfold, Gem, Pinpoint) plus 5 single-company big-tech careers platforms (Amazon, Apple, Google, Meta, Tesla). Open roles only by default (set include_closed=true for historical/filled roles). Salary is parsed from a structured field when the provider has one, or from an explicit pay figure stated in the description otherwise, so coverage varies by posting rather than by provider; min_salary/max_salary filter on it and require salary_currency, since comparing raw compensation numbers across currencies is meaningless. Location is also exposed as structured city/state/country fields alongside the free-text location string, so city/state/country filter on an exact match of those parsed components rather than substring-matching the display string. job_family is an exact level-2 ISCO family label assigned from ESCO occupation evidence; ambiguous postings remain unclassified and do not match that filter. employment_type is never populated for google-jobs/meta-jobs, and posted_at (so sort=posted_desc) is never populated for meta-jobs/tesla-jobs -- their upstream APIs expose no such field. provider enum: `greenhouse`, `lever`, `ashby`, `workday`, `smartrecruiters`, `workable`, `recruitee`, `rippling`, `personio`, `teamtailor`, `oracle`, `ukg`, `icims`, `eightfold`, `gem`, `pinpoint`, `amazon-jobs`, `apple-jobs`, `google-jobs`, `meta-jobs`, `tesla-jobs`. workplace_type enum: `onsite`, `hybrid`, `remote`. sort enum: `relevance`, `posted_desc`, `company_asc`. Billing: this search costs 1 credit per 10 records returned, rounded up, with a minimum of 1 (up to 10 records cost 1, a full page of 100 costs 10).", "operationId": "datasets-jobs-search", "parameters": [ { @@ -277556,7 +277738,7 @@ "consumes": [ "application/json" ], - "description": "Searches the journalists index (dataset id enum value `journalists`) — public journalist and reporter records crawled from news outlets' own staff/author pages, for PR outreach. Each record carries the outlet, title, best-effort beat topics, and any public contact info found on that outlet's own page, plus deterministic record_type, role_type, email_kind, and outreach-readiness quality signals. There is no cross-outlet upstream search; this dataset is built by crawling a curated roster of outlets ourselves. vertical enum: `tech`, `crypto`, `marketing`, `consumer_tech`, `consumer_policy`, `cybersecurity`, `health`, `gaming`, `climate`, `business`, `entertainment`, `sports`, `legal`, `science`, `politics`, `real_estate`, `automotive`, `travel`, `food`, `education`, `design`, `film_tv`, `fashion`, `music`, `personal_finance`, `tech_independent`, `culture_independent`, `local_news`, `construction`, `banking`, `retail`, `aerospace_defense`, `energy`, `agriculture`, `local_business`. contact_type enum: `email`, `social`, `none`. record_type enum: `person`, `desk`, `organization`, `syndicated_byline`, `unknown`. role_type enum: `staff`, `editor`, `reporter`, `contributor`, `freelancer`, `columnist`, `non_editorial`, `unknown`. email_kind enum: `individual_work`, `individual_personal_public`, `shared_desk`, `tips_or_submissions`, `outlet_generic`, `unknown`. sort enum: `relevance`, `name_asc`, `outlet_asc`, `crawled_desc`, `readiness_desc`.", + "description": "Searches the journalists index (dataset id enum value `journalists`) — public journalist and reporter records crawled from news outlets' own staff/author pages, for PR outreach. Each record carries the outlet, title, best-effort beat topics, and any public contact info found on that outlet's own page, plus deterministic record_type, role_type, email_kind, and outreach-readiness quality signals. There is no cross-outlet upstream search; this dataset is built by crawling a curated roster of outlets ourselves. vertical enum: `tech`, `crypto`, `marketing`, `consumer_tech`, `consumer_policy`, `cybersecurity`, `health`, `gaming`, `climate`, `business`, `entertainment`, `sports`, `legal`, `science`, `politics`, `real_estate`, `automotive`, `travel`, `food`, `education`, `design`, `film_tv`, `fashion`, `music`, `personal_finance`, `tech_independent`, `culture_independent`, `local_news`, `construction`, `banking`, `retail`, `aerospace_defense`, `energy`, `agriculture`, `local_business`. contact_type enum: `email`, `social`, `none`. record_type enum: `person`, `desk`, `organization`, `syndicated_byline`, `unknown`. role_type enum: `staff`, `editor`, `reporter`, `contributor`, `freelancer`, `columnist`, `non_editorial`, `unknown`. email_kind enum: `individual_work`, `individual_personal_public`, `shared_desk`, `tips_or_submissions`, `outlet_generic`, `unknown`. sort enum: `relevance`, `name_asc`, `outlet_asc`, `crawled_desc`, `readiness_desc`. Billing: this search costs 1 credit per record returned, with a minimum of 2 (an empty result costs 2, a full page of 100 costs 100).", "operationId": "datasets-journalists-search", "parameters": [ { @@ -278157,7 +278339,7 @@ "consumes": [ "application/json" ], - "description": "Searches the AI-readiness census of the top 1M sites (dataset id enum value `llms`) — one record per site describing whether it serves a real `/llms.txt` or `/llms-full.txt` (who produced it, what it links to and mentions) and what its `/robots.txt` says to 17 AI crawlers, next to a homepage control request. Search results omit the file bodies; read one site with the item endpoint. `blocked` and `error` states mean unknown, never absent. Sort enum: `relevance`, `rank_asc`, `links_desc`, `bytes_desc`, `domain_asc`, `crawled_desc`. state and robots_state enum: `present`, `absent`, `blocked`, `error`, `skipped`. source_kind enum: `shopify_agent_template`, `seo_plugin`, `platform_default`, `parked`, `custom`. generator enum: `yoast`, `aioseo`, `rankmath`, `wix`, `shopify`, `parked`. robots_default enum: `allowed`, `partial`, `blocked`. content_signal_train enum: `yes`, `no`. Crawler enum for blocks_all, blocks_any and not_blocked: `GPTBot`, `OAI-SearchBot`, `ChatGPT-User`, `ClaudeBot`, `Claude-SearchBot`, `Claude-User`, `anthropic-ai`, `Google-Extended`, `PerplexityBot`, `Perplexity-User`, `CCBot`, `Bytespider`, `Applebot-Extended`, `Amazonbot`, `meta-externalagent`, `cohere-ai`, `Diffbot`. Site owners can ask for removal at privacy@crawlora.net.", + "description": "Searches the AI-readiness census of the top 1M sites (dataset id enum value `llms`) — one record per site describing whether it serves a real `/llms.txt` or `/llms-full.txt` (who produced it, what it links to and mentions) and what its `/robots.txt` says to 17 AI crawlers, next to a homepage control request. Search results omit the file bodies; read one site with the item endpoint. `blocked` and `error` states mean unknown, never absent. Sort enum: `relevance`, `rank_asc`, `links_desc`, `bytes_desc`, `domain_asc`, `crawled_desc`. state and robots_state enum: `present`, `absent`, `blocked`, `error`, `skipped`. source_kind enum: `shopify_agent_template`, `seo_plugin`, `platform_default`, `parked`, `custom`. generator enum: `yoast`, `aioseo`, `rankmath`, `wix`, `shopify`, `parked`. robots_default enum: `allowed`, `partial`, `blocked`. content_signal_train enum: `yes`, `no`. Crawler enum for blocks_all, blocks_any and not_blocked: `GPTBot`, `OAI-SearchBot`, `ChatGPT-User`, `ClaudeBot`, `Claude-SearchBot`, `Claude-User`, `anthropic-ai`, `Google-Extended`, `PerplexityBot`, `Perplexity-User`, `CCBot`, `Bytespider`, `Applebot-Extended`, `Amazonbot`, `meta-externalagent`, `cohere-ai`, `Diffbot`. Site owners can ask for removal at privacy@crawlora.net. Billing: this search costs 1 credit per record returned, with a minimum of 2 (an empty result costs 2, a full page of 100 costs 100).", "operationId": "datasets-llms-search", "parameters": [ { @@ -278690,7 +278872,7 @@ "consumes": [ "application/json" ], - "description": "Searches the composite Numbeo cities dataset, merged from the current global rankings of all seven index families (cost of living, quality of life, crime, health care, pollution, traffic, property investment). A city appears once it is ranked by at least one family; coverage varies per city. Sort enum: `name_asc`, `cost_of_living_asc`, `cost_of_living_desc`, `quality_of_life_desc`, `safety_desc`, `crime_asc`, `health_care_desc`, `pollution_asc`, `traffic_asc`.", + "description": "Searches the composite Numbeo cities dataset, merged from the current global rankings of all seven index families (cost of living, quality of life, crime, health care, pollution, traffic, property investment). A city appears once it is ranked by at least one family; coverage varies per city. Sort enum: `name_asc`, `cost_of_living_asc`, `cost_of_living_desc`, `quality_of_life_desc`, `safety_desc`, `crime_asc`, `health_care_desc`, `pollution_asc`, `traffic_asc`. Billing: this search costs 1 credit per record returned, with a minimum of 2 (an empty result costs 2, a full page of 100 costs 100).", "operationId": "datasets-numbeo-cities-search", "parameters": [ { @@ -278897,7 +279079,7 @@ "consumes": [ "application/json" ], - "description": "Searches the composite Numbeo countries dataset, merged from the current global by-country rankings of all seven index families. Sort enum: `name_asc`, `cost_of_living_asc`, `cost_of_living_desc`, `quality_of_life_desc`, `safety_desc`, `crime_asc`, `health_care_desc`, `pollution_asc`, `traffic_asc`.", + "description": "Searches the composite Numbeo countries dataset, merged from the current global by-country rankings of all seven index families. Sort enum: `name_asc`, `cost_of_living_asc`, `cost_of_living_desc`, `quality_of_life_desc`, `safety_desc`, `crime_asc`, `health_care_desc`, `pollution_asc`, `traffic_asc`. Billing: this search costs 1 credit per record returned, with a minimum of 2 (an empty result costs 2, a full page of 100 costs 100).", "operationId": "datasets-numbeo-countries-search", "parameters": [ { @@ -279203,7 +279385,7 @@ "consumes": [ "application/json" ], - "description": "Searches the crawled public PitchBook advisor (service provider — e.g. investment bank, lender, financing advisory firm) profile catalog stored in a search index. Discovered from PitchBook's public sitemap. Sort enum: `relevance`, `name_asc`, `year_founded_desc`, `recently_crawled_desc`.", + "description": "Searches the crawled public PitchBook advisor (service provider — e.g. investment bank, lender, financing advisory firm) profile catalog stored in a search index. Discovered from PitchBook's public sitemap. Sort enum: `relevance`, `name_asc`, `year_founded_desc`, `recently_crawled_desc`. Billing: this search costs 1 credit per record returned, with a minimum of 2 (an empty result costs 2, a full page of 100 costs 100).", "operationId": "datasets-pitchbook-advisors-search", "parameters": [ { @@ -279513,7 +279695,7 @@ "consumes": [ "application/json" ], - "description": "Searches the crawled public PitchBook company profile catalog stored in a search index. Discovered from PitchBook's public sitemap. Sort enum: `relevance`, `name_asc`, `year_founded_desc`, `investor_count_desc`, `recently_crawled_desc`.", + "description": "Searches the crawled public PitchBook company profile catalog stored in a search index. Discovered from PitchBook's public sitemap. Sort enum: `relevance`, `name_asc`, `year_founded_desc`, `investor_count_desc`, `recently_crawled_desc`. Billing: this search costs 1 credit per record returned, with a minimum of 2 (an empty result costs 2, a full page of 100 costs 100).", "operationId": "datasets-pitchbook-companies-search", "parameters": [ { @@ -279814,7 +279996,7 @@ "consumes": [ "application/json" ], - "description": "Searches the crawled public PitchBook fund profile catalog stored in a search index. Discovered from PitchBook's public sitemap. Sort enum: `relevance`, `name_asc`, `vintage_desc`, `recently_crawled_desc`.", + "description": "Searches the crawled public PitchBook fund profile catalog stored in a search index. Discovered from PitchBook's public sitemap. Sort enum: `relevance`, `name_asc`, `vintage_desc`, `recently_crawled_desc`. Billing: this search costs 1 credit per record returned, with a minimum of 2 (an empty result costs 2, a full page of 100 costs 100).", "operationId": "datasets-pitchbook-funds-search", "parameters": [ { @@ -280098,7 +280280,7 @@ "consumes": [ "application/json" ], - "description": "Searches the crawled public PitchBook investor (fund manager/firm) profile catalog stored in a search index. Discovered from PitchBook's public sitemap. Sort enum: `relevance`, `name_asc`, `portfolio_count_desc`, `recently_crawled_desc`.", + "description": "Searches the crawled public PitchBook investor (fund manager/firm) profile catalog stored in a search index. Discovered from PitchBook's public sitemap. Sort enum: `relevance`, `name_asc`, `portfolio_count_desc`, `recently_crawled_desc`. Billing: this search costs 1 credit per record returned, with a minimum of 2 (an empty result costs 2, a full page of 100 costs 100).", "operationId": "datasets-pitchbook-investors-search", "parameters": [ { @@ -280387,7 +280569,7 @@ "consumes": [ "application/json" ], - "description": "Searches the crawled public PitchBook limited partner (institutional investor — e.g. pension fund, endowment, insurance company) profile catalog stored in a search index. Discovered from PitchBook's public sitemap. Some limited partner profiles have no FAQ section -- this is normal, not a sign of missing data. Sort enum: `relevance`, `name_asc`, `year_founded_desc`, `recently_crawled_desc`.", + "description": "Searches the crawled public PitchBook limited partner (institutional investor — e.g. pension fund, endowment, insurance company) profile catalog stored in a search index. Discovered from PitchBook's public sitemap. Some limited partner profiles have no FAQ section -- this is normal, not a sign of missing data. Sort enum: `relevance`, `name_asc`, `year_founded_desc`, `recently_crawled_desc`. Billing: this search costs 1 credit per record returned, with a minimum of 2 (an empty result costs 2, a full page of 100 costs 100).", "operationId": "datasets-pitchbook-limited-partners-search", "parameters": [ { @@ -280798,7 +280980,7 @@ "consumes": [ "application/json" ], - "description": "Searches the crawled public PlayStation Store catalog stored in a search index. One row per product SKU (game, edition or add-on); concept_id / np_title_id group a title's SKUs. price_tier enum: `free`, `under_5`, `5_to_10`, `10_to_20`, `20_to_40`, `40_to_60`, `60_plus`. Sort enum: `relevance`, `rating_desc`, `reviews_desc`, `price_asc`, `price_desc`, `discount_desc`, `release_desc`, `release_asc`.", + "description": "Searches the crawled public PlayStation Store catalog stored in a search index. One row per product SKU (game, edition or add-on); concept_id / np_title_id group a title's SKUs. price_tier enum: `free`, `under_5`, `5_to_10`, `10_to_20`, `20_to_40`, `40_to_60`, `60_plus`. Sort enum: `relevance`, `rating_desc`, `reviews_desc`, `price_asc`, `price_desc`, `discount_desc`, `release_desc`, `release_asc`. Billing: this search costs 1 credit per record returned, with a minimum of 2 (an empty result costs 2, a full page of 100 costs 100).", "operationId": "datasets-playstation-games-search", "parameters": [ { @@ -281182,7 +281364,7 @@ "consumes": [ "application/json" ], - "description": "Searches Product Hunt makers from the dataset id enum value `producthunt-makers` — public-profile records of the people who made products, with their footprint (products made, total upvotes, topics) for maker leaderboards. Public fields only. Sort enum: `total_votes_desc`, `product_count_desc`, `followers_desc`, `relevance`.", + "description": "Searches Product Hunt makers from the dataset id enum value `producthunt-makers` — public-profile records of the people who made products, with their footprint (products made, total upvotes, topics) for maker leaderboards. Public fields only. Sort enum: `total_votes_desc`, `product_count_desc`, `followers_desc`, `relevance`. Billing: this search costs 1 credit per record returned, with a minimum of 2 (an empty result costs 2, a full page of 100 costs 100).", "operationId": "datasets-producthunt-makers-search", "parameters": [ { @@ -281465,7 +281647,7 @@ "consumes": [ "application/json" ], - "description": "Searches individual Product Hunt launches from the dataset id enum value `producthunt-products` — the searchable launch archive. Each result is one product with its topics, upvotes, ranks and launch history; description/website/twitter_url/pricing/makers are filled in as hydration runs. Sort enum: `relevance`, `votes_desc`, `launched_desc`, `launched_asc`, `rating_desc`, `best_rank_asc`.", + "description": "Searches individual Product Hunt launches from the dataset id enum value `producthunt-products` — the searchable launch archive. Each result is one product with its topics, upvotes, ranks and launch history; description/website/twitter_url/pricing/makers are filled in as hydration runs. Sort enum: `relevance`, `votes_desc`, `launched_desc`, `launched_asc`, `rating_desc`, `best_rank_asc`. Billing: this search costs 1 credit per record returned, with a minimum of 2 (an empty result costs 2, a full page of 100 costs 100).", "operationId": "datasets-producthunt-products-search", "parameters": [ { @@ -281702,7 +281884,7 @@ "consumes": [ "application/json" ], - "description": "Returns aggregate Product Hunt launch trends from the dataset id enum value `producthunt-trends`. Aggregate-only: each row is a category-over-time cell (a topic, optionally within a calendar period), reporting launch count, total and average upvotes, average rating and the top product — never an individual product record. Thin cells are suppressed. group_by enum: `topic_month`, `topic_year`, `topic`. Sort enum: `period_desc`, `period_asc`, `launch_count_desc`, `sum_votes_desc`.", + "description": "Returns aggregate Product Hunt launch trends from the dataset id enum value `producthunt-trends`. Aggregate-only: each row is a category-over-time cell (a topic, optionally within a calendar period), reporting launch count, total and average upvotes, average rating and the top product — never an individual product record. Thin cells are suppressed. group_by enum: `topic_month`, `topic_year`, `topic`. Sort enum: `period_desc`, `period_asc`, `launch_count_desc`, `sum_votes_desc`. Billing: this search costs 1 credit per record returned, with a minimum of 2 (an empty result costs 2, a full page of 100 costs 100).", "operationId": "datasets-producthunt-trends-search", "parameters": [ { @@ -281816,7 +281998,7 @@ "consumes": [ "application/json" ], - "description": "Searches daily snapshots of each tracked subreddit's hot-feed post order, stored in a search index (one document per subreddit × snapshot × rank) so history accumulates. With no `date` the latest snapshot is returned (today's trending); pair `subreddit` with `sort=date_desc` for a subreddit's trending history over time. There is no score or comment-count field — the underlying credential-free scraper does not expose vote counts, so `rank` reflects Reddit's own hot-feed order rather than a locally computed score.", + "description": "Searches daily snapshots of each tracked subreddit's hot-feed post order, stored in a search index (one document per subreddit × snapshot × rank) so history accumulates. With no `date` the latest snapshot is returned (today's trending); pair `subreddit` with `sort=date_desc` for a subreddit's trending history over time. There is no score or comment-count field — the underlying credential-free scraper does not expose vote counts, so `rank` reflects Reddit's own hot-feed order rather than a locally computed score. Billing: this search costs 1 credit per record returned, with a minimum of 2 (an empty result costs 2, a full page of 100 costs 100).", "operationId": "datasets-reddit-trending-search", "parameters": [ { @@ -282272,7 +282454,7 @@ "consumes": [ "application/json" ], - "description": "Searches SEC-reporting companies stored in a search index — normalized filing history, financial-statement rollups (latest annual/quarterly revenue, net income, total assets) and trailing-90-day insider (Form 3/4/5) activity. Sort enum: `relevance`, `name_asc`, `revenue_desc`, `net_income_desc`, `filing_recent_desc`, `insider_activity_desc`. `entity_type`, `sic`, `sic_description`, `exchange`, and `state_of_incorporation` are open filters over the exact values EDGAR reports for each filer (not a fixed enum) — discover real values via the matching facet.", + "description": "Searches SEC-reporting companies stored in a search index — normalized filing history, financial-statement rollups (latest annual/quarterly revenue, net income, total assets) and trailing-90-day insider (Form 3/4/5) activity. Sort enum: `relevance`, `name_asc`, `revenue_desc`, `net_income_desc`, `filing_recent_desc`, `insider_activity_desc`. `entity_type`, `sic`, `sic_description`, `exchange`, and `state_of_incorporation` are open filters over the exact values EDGAR reports for each filer (not a fixed enum) — discover real values via the matching facet. Billing: this search costs 1 credit per record returned, with a minimum of 2 (an empty result costs 2, a full page of 100 costs 100).", "operationId": "datasets-sec-companies-search", "parameters": [ { @@ -282522,7 +282704,7 @@ "consumes": [ "application/json" ], - "description": "Searches institutional investment managers' quarterly 13F portfolio holdings stored in a search index. Filter by manager_cik for a manager's full reported portfolio (an exact, reliable filter), or by issuer_name/cusip for a best-effort view of which managers reported a position in an issuer — SEC publishes no authoritative CUSIP-to-CIK mapping, so the issuer side is never a guaranteed-resolved join. Sort enum: `value_desc`, `value_asc`, `shares_desc`.", + "description": "Searches institutional investment managers' quarterly 13F portfolio holdings stored in a search index. Filter by manager_cik for a manager's full reported portfolio (an exact, reliable filter), or by issuer_name/cusip for a best-effort view of which managers reported a position in an issuer — SEC publishes no authoritative CUSIP-to-CIK mapping, so the issuer side is never a guaranteed-resolved join. Sort enum: `value_desc`, `value_asc`, `shares_desc`. Billing: this search costs 1 credit per record returned, with a minimum of 2 (an empty result costs 2, a full page of 100 costs 100).", "operationId": "datasets-sec-institutional-positions-search", "parameters": [ { @@ -282779,7 +282961,7 @@ "consumes": [ "application/json" ], - "description": "Returns stored Starbucks stores within a radius of a point, nearest first, from dataset id `starbucks-stores`. lat, lon, and radius_m are required. Unlike the live /starbucks/stores endpoint (which caps at 50 near a point), this queries the full grid-tiled directory, so it can return every store in the radius.", + "description": "Returns stored Starbucks stores within a radius of a point, nearest first, from dataset id `starbucks-stores`. lat, lon, and radius_m are required. Unlike the live /starbucks/stores endpoint (which caps at 50 near a point), this queries the full grid-tiled directory, so it can return every store in the radius. Billing: this endpoint costs 1 credit per record returned, with a minimum of 2 (an empty result costs 2, a full page of 100 costs 100).", "operationId": "datasets-starbucks-stores-nearby", "parameters": [ { @@ -282876,7 +283058,7 @@ "consumes": [ "application/json" ], - "description": "Searches the worldwide Starbucks store directory (dataset id `starbucks-stores`), built by grid-tiling the store locator around its 50-result cap. Each store has its store number, name, phone, full address, coordinates, weekly hours, amenity codes, and pick-up options. Store discovery is global, but hours, amenities, and phone numbers are populated per market and are largely absent outside the US, Canada, Europe, and the Gulf; an empty schedule means \"not published for this market\", not \"closed\". `country` is the store's true country while `market` is crawl provenance (the US host geocodes worldwide). Supports full-text `q`, `country`/`state`/`city`/`market`/`amenity` filters, `lat`/`lon`/`radius_m` radius filtering, and `sort` (relevance, distance_asc).", + "description": "Searches the worldwide Starbucks store directory (dataset id `starbucks-stores`), built by grid-tiling the store locator around its 50-result cap. Each store has its store number, name, phone, full address, coordinates, weekly hours, amenity codes, and pick-up options. Store discovery is global, but hours, amenities, and phone numbers are populated per market and are largely absent outside the US, Canada, Europe, and the Gulf; an empty schedule means \"not published for this market\", not \"closed\". `country` is the store's true country while `market` is crawl provenance (the US host geocodes worldwide). Supports full-text `q`, `country`/`state`/`city`/`market`/`amenity` filters, `lat`/`lon`/`radius_m` radius filtering, and `sort` (relevance, distance_asc). Billing: this search costs 1 credit per record returned, with a minimum of 2 (an empty result costs 2, a full page of 100 costs 100).", "operationId": "datasets-starbucks-stores-search", "parameters": [ { @@ -283005,7 +283187,7 @@ "consumes": [ "application/json" ], - "description": "Searches per-game global achievement unlock percentages (one document per appid × achievement). Pass `app_id` to list a game's achievements. Sort enum: `percent_desc` (most-unlocked first, default), `percent_asc` (rarest first), `rank_asc`.", + "description": "Searches per-game global achievement unlock percentages (one document per appid × achievement). Pass `app_id` to list a game's achievements. Sort enum: `percent_desc` (most-unlocked first, default), `percent_asc` (rarest first), `rank_asc`. Billing: this search costs 1 credit per record returned, with a minimum of 2 (an empty result costs 2, a full page of 100 costs 100).", "operationId": "datasets-steam-achievements-search", "parameters": [ { @@ -283083,7 +283265,7 @@ "consumes": [ "application/json" ], - "description": "Searches daily snapshots of Steam's player-count and sales charts, stored in a search index (one document per chart × country × snapshot × rank) so history accumulates. Charts: `most_played` (weekly peak concurrent), `concurrent` (live concurrent players), `top_sellers` (weekly sales; country-specific). With no `date` the latest snapshot is returned (today's chart); pair `app_id` with `sort=date_desc` for an app's rank/players over time. Country is `global` for the player-count charts or an ISO code (e.g. `us`) for `top_sellers`. Sort enum: `rank`, `rank_desc`, `date_desc`.", + "description": "Searches daily snapshots of Steam's player-count and sales charts, stored in a search index (one document per chart × country × snapshot × rank) so history accumulates. Charts: `most_played` (weekly peak concurrent), `concurrent` (live concurrent players), `top_sellers` (weekly sales; country-specific). With no `date` the latest snapshot is returned (today's chart); pair `app_id` with `sort=date_desc` for an app's rank/players over time. Country is `global` for the player-count charts or an ISO code (e.g. `us`) for `top_sellers`. Sort enum: `rank`, `rank_desc`, `date_desc`. Billing: this search costs 1 credit per record returned, with a minimum of 2 (an empty result costs 2, a full page of 100 costs 100).", "operationId": "datasets-steam-charts-search", "parameters": [ { @@ -283505,7 +283687,7 @@ "consumes": [ "application/json" ], - "description": "Searches enriched public Steam catalog records stored in a search index. price_tier enum: `free`, `under5`, `5to15`, `15to30`, `30to60`, `over60`. review_tier enum: `overwhelmingly_positive`, `very_positive`, `positive`, `mostly_positive`, `mixed`, `mostly_negative`, `negative`, `very_negative`, `overwhelmingly_negative`, `insufficient`. Sort enum: `relevance`, `owners_desc`, `reviews_desc`, `review_score_desc`, `ccu_desc`, `metacritic_desc`, `price_asc`, `price_desc`, `release_desc`, `release_asc`.", + "description": "Searches enriched public Steam catalog records stored in a search index. price_tier enum: `free`, `under5`, `5to15`, `15to30`, `30to60`, `over60`. review_tier enum: `overwhelmingly_positive`, `very_positive`, `positive`, `mostly_positive`, `mixed`, `mostly_negative`, `negative`, `very_negative`, `overwhelmingly_negative`, `insufficient`. Sort enum: `relevance`, `owners_desc`, `reviews_desc`, `review_score_desc`, `ccu_desc`, `metacritic_desc`, `price_asc`, `price_desc`, `release_desc`, `release_asc`. Billing: this search costs 1 credit per record returned, with a minimum of 2 (an empty result costs 2, a full page of 100 costs 100).", "operationId": "datasets-steam-games-search", "parameters": [ { @@ -283760,7 +283942,7 @@ "consumes": [ "application/json" ], - "description": "Searches Steam news + announcements for tracked apps (one document per appid × gid; the latest items per app are kept). Filter by `app_id` for a single game's news, or full-text `q` over the title + contents. Sort enum: `date_desc` (newest first, default), `date_asc`.", + "description": "Searches Steam news + announcements for tracked apps (one document per appid × gid; the latest items per app are kept). Filter by `app_id` for a single game's news, or full-text `q` over the title + contents. Sort enum: `date_desc` (newest first, default), `date_asc`. Billing: this search costs 1 credit per record returned, with a minimum of 2 (an empty result costs 2, a full page of 100 costs 100).", "operationId": "datasets-steam-news-search", "parameters": [ { @@ -283843,7 +284025,7 @@ "consumes": [ "application/json" ], - "description": "Searches the daily concurrent-player time series for tracked games (one document per appid × day). Pair `app_id` with `sort=date_desc` for a game's player-count history, or pass `date` for one day's snapshot. Sort enum: `date_desc` (default), `date_asc`, `players_desc`.", + "description": "Searches the daily concurrent-player time series for tracked games (one document per appid × day). Pair `app_id` with `sort=date_desc` for a game's player-count history, or pass `date` for one day's snapshot. Sort enum: `date_desc` (default), `date_asc`, `players_desc`. Billing: this search costs 1 credit per record returned, with a minimum of 2 (an empty result costs 2, a full page of 100 costs 100).", "operationId": "datasets-steam-playercounts-search", "parameters": [ { @@ -283927,7 +284109,7 @@ "consumes": [ "application/json" ], - "description": "Searches the daily price time series for priced games (one document per appid × day; integer cents). Pair `app_id` with `sort=date_desc` for a game's price history, or pass `date` for one day's snapshot. Sort enum: `date_desc` (default), `date_asc`, `price_asc`, `price_desc`, `discount_desc`.", + "description": "Searches the daily price time series for priced games (one document per appid × day; integer cents). Pair `app_id` with `sort=date_desc` for a game's price history, or pass `date` for one day's snapshot. Sort enum: `date_desc` (default), `date_asc`, `price_asc`, `price_desc`, `discount_desc`. Billing: this search costs 1 credit per record returned, with a minimum of 2 (an empty result costs 2, a full page of 100 costs 100).", "operationId": "datasets-steam-prices-search", "parameters": [ { @@ -284013,7 +284195,7 @@ "consumes": [ "application/json" ], - "description": "Searches the stored Steam review corpus (the most-helpful reviews per game; one document per appid × recommendation). Full-text `q` over the review body, filter by `app_id`, `language`, or `voted_up` (positive/negative). Sort enum: `votes_desc` (most-helpful first, default), `weighted_desc`, `date_desc`.", + "description": "Searches the stored Steam review corpus (the most-helpful reviews per game; one document per appid × recommendation). Full-text `q` over the review body, filter by `app_id`, `language`, or `voted_up` (positive/negative). Sort enum: `votes_desc` (most-helpful first, default), `weighted_desc`, `date_desc`. Billing: this search costs 1 credit per record returned, with a minimum of 2 (an empty result costs 2, a full page of 100 costs 100).", "operationId": "datasets-steam-reviews-search", "parameters": [ { @@ -284366,7 +284548,7 @@ "consumes": [ "application/json" ], - "description": "Searches the website tech-stack index (dataset id enum value `techstack`) — one record per site listing the web technologies it is built with (frameworks, CMS, e-commerce, analytics, CDNs, servers, and more), BuiltWith / Wappalyzer-style. The reverse-index filters are the point: repeat `technology` to require several at once (AND), `any_of` to match at least one (OR), and `not` to exclude — e.g. sites on `Shopify` and `Klaviyo` but not `Recharge`. Sort enum: `relevance`, `rank_asc`, `tech_count_desc`, `domain_asc`, `crawled_desc`. render_tier enum: `http`, `browser`.", + "description": "Searches the website tech-stack index (dataset id enum value `techstack`) — one record per site listing the web technologies it is built with (frameworks, CMS, e-commerce, analytics, CDNs, servers, and more), BuiltWith / Wappalyzer-style. The reverse-index filters are the point: repeat `technology` to require several at once (AND), `any_of` to match at least one (OR), and `not` to exclude — e.g. sites on `Shopify` and `Klaviyo` but not `Recharge`. Sort enum: `relevance`, `rank_asc`, `tech_count_desc`, `domain_asc`, `crawled_desc`. render_tier enum: `http`, `browser`. Billing: this search costs 1 credit per record returned, with a minimum of 2 (an empty result costs 2, a full page of 100 costs 100).", "operationId": "datasets-techstack-search", "parameters": [ { @@ -284809,7 +284991,7 @@ "consumes": [ "application/json" ], - "description": "Searches public startups with payment-provider-verified revenue and MRR, stored in a search index. Filter by category, country, payment provider, target audience, tech, marketing channel, listing tier and for-sale status, and by revenue/MRR/traffic/growth/multiple/asking-price ranges. Sort enum: `relevance`, `mrr_desc`, `revenue_desc`, `revenue_30d_desc`, `traffic_desc`, `growth_desc`, `deal_score_desc`, `price_asc`, `price_desc`, `multiple_asc`, `founded_desc`. status enum: `active`, `removed`.", + "description": "Searches public startups with payment-provider-verified revenue and MRR, stored in a search index. Filter by category, country, payment provider, target audience, tech, marketing channel, listing tier and for-sale status, and by revenue/MRR/traffic/growth/multiple/asking-price ranges. Sort enum: `relevance`, `mrr_desc`, `revenue_desc`, `revenue_30d_desc`, `traffic_desc`, `growth_desc`, `deal_score_desc`, `price_asc`, `price_desc`, `multiple_asc`, `founded_desc`. status enum: `active`, `removed`. Billing: this search costs 1 credit per record returned, with a minimum of 2 (an empty result costs 2, a full page of 100 costs 100).", "operationId": "datasets-trustmrr-search", "parameters": [ { @@ -285345,7 +285527,7 @@ "consumes": [ "application/json" ], - "description": "Searches the crawled used-vehicle listings index. source enum: `carmax`, `autotrader`, `carsdotcom`. CarMax's own national inventory is fully enumerable (re-crawled on a standing schedule); Autotrader/Cars.com coverage is a best-effort zip-code sweep, not exhaustive, and their rows approximate city/state from the searched area rather than the seller's exact location. seller_type enum: `retailer`, `dealer`, `private` (not populated for every row -- see the dataset markdown). Sort enum: `relevance`, `recently_updated`, `newly_listed`, `price_asc`, `price_desc`, `mileage_asc`, `mileage_desc`, `year_desc`, `year_asc`.", + "description": "Searches the crawled used-vehicle listings index. source enum: `carmax`, `autotrader`, `carsdotcom`. CarMax's own national inventory is fully enumerable (re-crawled on a standing schedule); Autotrader/Cars.com coverage is a best-effort zip-code sweep, not exhaustive, and their rows approximate city/state from the searched area rather than the seller's exact location. seller_type enum: `retailer`, `dealer`, `private` (not populated for every row -- see the dataset markdown). Sort enum: `relevance`, `recently_updated`, `newly_listed`, `price_asc`, `price_desc`, `mileage_asc`, `mileage_desc`, `year_desc`, `year_asc`. Billing: this search costs 1 credit per record returned, with a minimum of 2 (an empty result costs 2, a full page of 100 costs 100).", "operationId": "datasets-vehicle-listings-search", "parameters": [ { @@ -285772,7 +285954,7 @@ "consumes": [ "application/json" ], - "description": "Searches public X (Twitter) user profiles stored in a search index. Sort enum: `relevance`, `followers_desc`, `followers_asc`, `crawled_at_desc`, `crawled_at_asc`, `created_at_desc`, `created_at_asc`.", + "description": "Searches public X (Twitter) user profiles stored in a search index. Sort enum: `relevance`, `followers_desc`, `followers_asc`, `crawled_at_desc`, `crawled_at_asc`, `created_at_desc`, `created_at_asc`. Billing: this search costs 1 credit per record returned, with a minimum of 2 (an empty result costs 2, a full page of 100 costs 100).", "operationId": "datasets-x-users-search", "parameters": [ { @@ -286185,7 +286367,7 @@ "consumes": [ "application/json" ], - "description": "Searches public YouTube channel profiles stored in a search index — subscriber, video and view counts, region, bio and links, discovered via Common Crawl and Wikidata and hydrated from each channel's public About page. Sort enum: `relevance`, `followers_desc`, `followers_asc`, `views_desc`, `videos_desc`, `hydrated_at_desc`, `hydrated_at_asc`. Some channels hide their subscriber, video, or view count; the `_available` flags on each item distinguish a hidden count (stored as `0`, `*_available: false`) from a genuine `0`.", + "description": "Searches public YouTube channel profiles stored in a search index — subscriber, video and view counts, region, bio and links, discovered via Common Crawl and Wikidata and hydrated from each channel's public About page. Sort enum: `relevance`, `followers_desc`, `followers_asc`, `views_desc`, `videos_desc`, `hydrated_at_desc`, `hydrated_at_asc`. Some channels hide their subscriber, video, or view count; the `_available` flags on each item distinguish a hidden count (stored as `0`, `*_available: false`) from a genuine `0`. Billing: this search costs 1 credit per record returned, with a minimum of 2 (an empty result costs 2, a full page of 100 costs 100).", "operationId": "datasets-youtube-creators-search", "parameters": [ { diff --git a/pyproject.toml b/pyproject.toml index 46e0f4e..a58931b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "crawlora" -version = "1.47.0.dev1" +version = "1.47.1.dev1" description = "Official Python SDK for the Crawlora web-scraping API: typed grouped and dynamic operation calls for every public endpoint, with retries, pagination, hooks, and an async client." readme = "README.md" requires-python = ">=3.10"