diff --git a/CHANGELOG.md b/CHANGELOG.md
index d588231..729f4a3 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,11 @@
# Changelog
+## v1.39.0-sdk.1
+
+- Added Ticketmaster attraction detail, attraction reviews, and trending attractions endpoints, plus venue enhanced details.
+- Added Ticketweb platform support: event detail, event search, and venue lookup.
+- Regenerated from the public API contract (1475 operations).
+
## v1.38.0-sdk.1
- Regenerated from the public API contract (1468 operations).
diff --git a/crawlora/client.py b/crawlora/client.py
index e746cdd..a569322 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.38.0-sdk.1"
+VERSION = "1.39.0-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 e658d5f..82a5e88 100644
--- a/crawlora/client.pyi
+++ b/crawlora/client.pyi
@@ -10950,6 +10950,7 @@ ModelEsTechstackDatasetFacetItem = TypedDict('ModelEsTechstackDatasetFacetItem',
ModelEsTechstackRecord = TypedDict('ModelEsTechstackRecord', {
'analytics': NotRequired[list[str]],
+ 'block_matched': NotRequired[list[str]],
'categories': NotRequired[list[str]],
'category': NotRequired[str],
'cdn': NotRequired[str],
@@ -10957,9 +10958,12 @@ ModelEsTechstackRecord = TypedDict('ModelEsTechstackRecord', {
'detector_version': NotRequired[str],
'domain': NotRequired[str],
'ecommerce': NotRequired[str],
+ 'failure_reason': NotRequired[str],
'final_url': NotRequired[str],
'has_captcha': NotRequired[bool],
+ 'is_infrastructure': NotRequired[bool],
'method_version': NotRequired[str],
+ 'probe_error': NotRequired[str],
'probed_at': NotRequired[str],
'rank': NotRequired[int],
'reachable': NotRequired[bool],
@@ -24566,11 +24570,13 @@ ModelSimilarwebSearchResp = TypedDict('ModelSimilarwebSearchResp', {
}, total=False)
ModelSimilarwebSimilarWebResp = TypedDict('ModelSimilarwebSimilarWebResp', {
+ 'AiTrafficDetails': NotRequired[dict[str, Any]],
'Category': NotRequired[str],
'CategoryRank': NotRequired[dict[str, Any]],
'Competitors': NotRequired[dict[str, Any]],
'Countries': NotRequired[list[dict[str, Any]]],
'CountryRank': NotRequired[dict[str, Any]],
+ 'DataSource': NotRequired[str],
'Description': NotRequired[str],
'Engagments': NotRequired[dict[str, Any]],
'EstimatedMonthlyVisits': NotRequired[dict[str, Any]],
@@ -27007,16 +27013,6 @@ ModelTargetSearchResponseDoc = TypedDict('ModelTargetSearchResponseDoc', {
'msg': NotRequired[str],
}, total=False)
-ModelTechstackResult = TypedDict('ModelTechstackResult', {
- 'categories': NotRequired[list[str]],
- 'count': NotRequired[int],
- 'detector_version': NotRequired[str],
- 'final_url': NotRequired[str],
- 'technologies': NotRequired[list[ModelTechstackTechnology]],
- 'unmatched_evidence': NotRequired[ModelTechstackUnmatchedEvidence],
- 'url': NotRequired[str],
-}, total=False)
-
ModelTechstackTechnology = TypedDict('ModelTechstackTechnology', {
'categories': NotRequired[list[str]],
'confidence': NotRequired[str],
@@ -27172,9 +27168,12 @@ ModelThreadsSearchResponseDoc = TypedDict('ModelThreadsSearchResponseDoc', {
ModelTicketmasterAttraction = TypedDict('ModelTicketmasterAttraction', {
'classification': NotRequired[ModelTicketmasterClassification],
'discovery_id': NotRequired[str],
+ 'has_artist_video': NotRequired[bool],
'id': NotRequired[str],
'image_url': NotRequired[str],
'name': NotRequired[str],
+ 'setlist_source_url': NotRequired[str],
+ 'setlists': NotRequired[list[ModelTicketmasterSetlist]],
'synopsis': NotRequired[str],
'url': NotRequired[str],
}, total=False)
@@ -27187,12 +27186,34 @@ ModelTicketmasterAttractionRef = TypedDict('ModelTicketmasterAttractionRef', {
'url': NotRequired[str],
}, total=False)
+ModelTicketmasterAttractionRelatedResponse = TypedDict('ModelTicketmasterAttractionRelatedResponse', {
+ 'attraction_id': NotRequired[str],
+ 'attractions': NotRequired[list[ModelTicketmasterAttractionRef]],
+ 'count': NotRequired[int],
+ 'fetched_at': NotRequired[str],
+ 'source_url': NotRequired[str],
+}, total=False)
+
ModelTicketmasterAttractionResponse = TypedDict('ModelTicketmasterAttractionResponse', {
'attraction': NotRequired[ModelTicketmasterAttraction],
'fetched_at': NotRequired[str],
'source_url': NotRequired[str],
}, total=False)
+ModelTicketmasterAttractionReviewsResponse = TypedDict('ModelTicketmasterAttractionReviewsResponse', {
+ 'ai_review_summary': NotRequired[str],
+ 'attraction_id': NotRequired[str],
+ 'average_rating': NotRequired[float],
+ 'best_rating': NotRequired[float],
+ 'fetched_at': NotRequired[str],
+ 'limit': NotRequired[int],
+ 'offset': NotRequired[int],
+ 'reviews': NotRequired[list[ModelTicketmasterReview]],
+ 'source_url': NotRequired[str],
+ 'time_zone': NotRequired[str],
+ 'total': NotRequired[int],
+}, total=False)
+
ModelTicketmasterClassification = TypedDict('ModelTicketmasterClassification', {
'genre': NotRequired[str],
'segment': NotRequired[str],
@@ -27317,6 +27338,37 @@ ModelTicketmasterPresale = TypedDict('ModelTicketmasterPresale', {
'start_time': NotRequired[str],
}, total=False)
+ModelTicketmasterReview = TypedDict('ModelTicketmasterReview', {
+ 'city': NotRequired[str],
+ 'date_created': NotRequired[str],
+ 'nick_name': NotRequired[str],
+ 'rating': NotRequired[int],
+ 'review': NotRequired[str],
+ 'title': NotRequired[str],
+ 'venue': NotRequired[str],
+}, total=False)
+
+ModelTicketmasterSetlist = TypedDict('ModelTicketmasterSetlist', {
+ 'city_name': NotRequired[str],
+ 'country_name': NotRequired[str],
+ 'event_date': NotRequired[str],
+ 'sets': NotRequired[list[ModelTicketmasterSetlistSet]],
+ 'tour_name': NotRequired[str],
+ 'venue_name': NotRequired[str],
+}, total=False)
+
+ModelTicketmasterSetlistSet = TypedDict('ModelTicketmasterSetlistSet', {
+ 'name': NotRequired[str],
+ 'songs': NotRequired[list[ModelTicketmasterSetlistSong]],
+}, total=False)
+
+ModelTicketmasterSetlistSong = TypedDict('ModelTicketmasterSetlistSong', {
+ 'name': NotRequired[str],
+ 'original_artist': NotRequired[str],
+ 'performance_notes': NotRequired[str],
+ 'pre_recorded': NotRequired[bool],
+}, total=False)
+
ModelTicketmasterSuggestion = TypedDict('ModelTicketmasterSuggestion', {
'category': NotRequired[str],
'event_count': NotRequired[int],
@@ -27334,9 +27386,36 @@ ModelTicketmasterSuggestionsResponse = TypedDict('ModelTicketmasterSuggestionsRe
'suggestions': NotRequired[list[ModelTicketmasterSuggestion]],
}, total=False)
+ModelTicketmasterTrendingAttraction = TypedDict('ModelTicketmasterTrendingAttraction', {
+ 'discovery_id': NotRequired[str],
+ 'genre': NotRequired[str],
+ 'genre_id': NotRequired[str],
+ 'id': NotRequired[str],
+ 'image_url': NotRequired[str],
+ 'images': NotRequired[list[ModelTicketmasterTrendingAttractionImage]],
+ 'name': NotRequired[str],
+ 'rank': NotRequired[int],
+ 'segment': NotRequired[str],
+ 'segment_id': NotRequired[str],
+ 'url': NotRequired[str],
+}, total=False)
+
+ModelTicketmasterTrendingAttractionImage = TypedDict('ModelTicketmasterTrendingAttractionImage', {
+ 'ratio': NotRequired[str],
+ 'url': NotRequired[str],
+}, total=False)
+
+ModelTicketmasterTrendingAttractionsResponse = TypedDict('ModelTicketmasterTrendingAttractionsResponse', {
+ 'attractions': NotRequired[list[ModelTicketmasterTrendingAttraction]],
+ 'count': NotRequired[int],
+ 'fetched_at': NotRequired[str],
+ 'source_url': NotRequired[str],
+}, total=False)
+
ModelTicketmasterVenue = TypedDict('ModelTicketmasterVenue', {
'address': NotRequired[str],
'city': NotRequired[str],
+ 'city_categories': NotRequired[list[ModelTicketmasterVenueCityCategory]],
'country': NotRequired[str],
'discovery_id': NotRequired[str],
'id': NotRequired[str],
@@ -27346,11 +27425,26 @@ ModelTicketmasterVenue = TypedDict('ModelTicketmasterVenue', {
'longitude': NotRequired[float],
'name': NotRequired[str],
'postal_code': NotRequired[str],
+ 'seat_maps': NotRequired[list[ModelTicketmasterVenueSeatMap]],
'state': NotRequired[str],
'time_zone': NotRequired[str],
'url': NotRequired[str],
}, total=False)
+ModelTicketmasterVenueCityCategory = TypedDict('ModelTicketmasterVenueCityCategory', {
+ 'id': NotRequired[str],
+ 'name': NotRequired[str],
+ 'url': NotRequired[str],
+}, total=False)
+
+ModelTicketmasterVenueEnhancedDetailsResponse = TypedDict('ModelTicketmasterVenueEnhancedDetailsResponse', {
+ 'fetched_at': NotRequired[str],
+ 'header_image_url': NotRequired[str],
+ 'related_links': NotRequired[list[ModelTicketmasterVenueRelatedLink]],
+ 'source_url': NotRequired[str],
+ 'venue_id': NotRequired[str],
+}, total=False)
+
ModelTicketmasterVenueInfoBlock = TypedDict('ModelTicketmasterVenueInfoBlock', {
'name': NotRequired[str],
'text': NotRequired[str],
@@ -27371,18 +27465,41 @@ ModelTicketmasterVenueRef = TypedDict('ModelTicketmasterVenueRef', {
'url': NotRequired[str],
}, total=False)
+ModelTicketmasterVenueRelatedLink = TypedDict('ModelTicketmasterVenueRelatedLink', {
+ 'image_url': NotRequired[str],
+ 'title': NotRequired[str],
+ 'url': NotRequired[str],
+}, total=False)
+
ModelTicketmasterVenueResponse = TypedDict('ModelTicketmasterVenueResponse', {
'fetched_at': NotRequired[str],
'source_url': NotRequired[str],
'venue': NotRequired[ModelTicketmasterVenue],
}, total=False)
+ModelTicketmasterVenueSeatMap = TypedDict('ModelTicketmasterVenueSeatMap', {
+ 'image_url': NotRequired[str],
+ 'name': NotRequired[str],
+}, total=False)
+
+ModelTicketmasterAttractionRelatedResponseDoc = TypedDict('ModelTicketmasterAttractionRelatedResponseDoc', {
+ 'code': NotRequired[int],
+ 'data': NotRequired[ModelTicketmasterAttractionRelatedResponse],
+ 'msg': NotRequired[str],
+}, total=False)
+
ModelTicketmasterAttractionResponseDoc = TypedDict('ModelTicketmasterAttractionResponseDoc', {
'code': NotRequired[int],
'data': NotRequired[ModelTicketmasterAttractionResponse],
'msg': NotRequired[str],
}, total=False)
+ModelTicketmasterAttractionReviewsResponseDoc = TypedDict('ModelTicketmasterAttractionReviewsResponseDoc', {
+ 'code': NotRequired[int],
+ 'data': NotRequired[ModelTicketmasterAttractionReviewsResponse],
+ 'msg': NotRequired[str],
+}, total=False)
+
ModelTicketmasterCategoriesResponseDoc = TypedDict('ModelTicketmasterCategoriesResponseDoc', {
'code': NotRequired[int],
'data': NotRequired[ModelTicketmasterDiscoverCategoriesResponse],
@@ -27413,12 +27530,167 @@ ModelTicketmasterSuggestionsResponseDoc = TypedDict('ModelTicketmasterSuggestion
'msg': NotRequired[str],
}, total=False)
+ModelTicketmasterTrendingAttractionsResponseDoc = TypedDict('ModelTicketmasterTrendingAttractionsResponseDoc', {
+ 'code': NotRequired[int],
+ 'data': NotRequired[ModelTicketmasterTrendingAttractionsResponse],
+ 'msg': NotRequired[str],
+}, total=False)
+
+ModelTicketmasterVenueEnhancedDetailsResponseDoc = TypedDict('ModelTicketmasterVenueEnhancedDetailsResponseDoc', {
+ 'code': NotRequired[int],
+ 'data': NotRequired[ModelTicketmasterVenueEnhancedDetailsResponse],
+ 'msg': NotRequired[str],
+}, total=False)
+
ModelTicketmasterVenueResponseDoc = TypedDict('ModelTicketmasterVenueResponseDoc', {
'code': NotRequired[int],
'data': NotRequired[ModelTicketmasterVenueResponse],
'msg': NotRequired[str],
}, total=False)
+ModelTicketwebAttraction = TypedDict('ModelTicketwebAttraction', {
+ 'category': NotRequired[str],
+ 'genre': NotRequired[str],
+ 'id': NotRequired[str],
+ 'image_url': NotRequired[str],
+ 'name': NotRequired[str],
+}, total=False)
+
+ModelTicketwebDeliveryMethod = TypedDict('ModelTicketwebDeliveryMethod', {
+ 'description': NotRequired[str],
+ 'fee': NotRequired[str],
+ 'name': NotRequired[str],
+}, total=False)
+
+ModelTicketwebEventDetail = TypedDict('ModelTicketwebEventDetail', {
+ 'age_restriction': NotRequired[int],
+ 'age_restriction_message': NotRequired[str],
+ 'announce_time': NotRequired[str],
+ 'attractions': NotRequired[list[ModelTicketwebAttraction]],
+ 'currency': NotRequired[str],
+ 'delivery_methods': NotRequired[list[ModelTicketwebDeliveryMethod]],
+ 'description': NotRequired[str],
+ 'end_time': NotRequired[str],
+ 'has_tickets': NotRequired[bool],
+ 'id': NotRequired[str],
+ 'image_url': NotRequired[str],
+ 'name': NotRequired[str],
+ 'on_sale_time': NotRequired[str],
+ 'price_range': NotRequired[ModelTicketwebPriceRange],
+ 'sections': NotRequired[list[ModelTicketwebTicketSection]],
+ 'start_time': NotRequired[str],
+ 'terms_and_conditions': NotRequired[str],
+ 'url': NotRequired[str],
+ 'venue': NotRequired[ModelTicketwebEventVenue],
+}, total=False)
+
+ModelTicketwebEventResponse = TypedDict('ModelTicketwebEventResponse', {
+ 'event': NotRequired[ModelTicketwebEventDetail],
+ 'fetched_at': NotRequired[str],
+ 'source_url': NotRequired[str],
+}, total=False)
+
+ModelTicketwebEventSummary = TypedDict('ModelTicketwebEventSummary', {
+ 'availability': NotRequired[Literal['in_stock', 'sold_out', 'unknown']],
+ 'id': NotRequired[str],
+ 'image_url': NotRequired[str],
+ 'name': NotRequired[str],
+ 'start_time': NotRequired[str],
+ 'url': NotRequired[str],
+ 'venue': NotRequired[ModelTicketwebVenueRef],
+}, total=False)
+
+ModelTicketwebEventVenue = TypedDict('ModelTicketwebEventVenue', {
+ 'address': NotRequired[str],
+ 'city': NotRequired[str],
+ 'country': NotRequired[str],
+ 'id': NotRequired[str],
+ 'map_image': NotRequired[str],
+ 'name': NotRequired[str],
+ 'postal_code': NotRequired[str],
+ 'state': NotRequired[str],
+ 'time_zone': NotRequired[str],
+}, total=False)
+
+ModelTicketwebPriceRange = TypedDict('ModelTicketwebPriceRange', {
+ 'max': NotRequired[float],
+ 'min': NotRequired[float],
+}, total=False)
+
+ModelTicketwebSearchResponse = TypedDict('ModelTicketwebSearchResponse', {
+ 'count': NotRequired[int],
+ 'events': NotRequired[list[ModelTicketwebEventSummary]],
+ 'fetched_at': NotRequired[str],
+ 'page': NotRequired[int],
+ 'query': NotRequired[str],
+ 'source_url': NotRequired[str],
+}, total=False)
+
+ModelTicketwebTicketFees = TypedDict('ModelTicketwebTicketFees', {
+ 'credit_card': NotRequired[float],
+ 'facility': NotRequired[float],
+ 'per_ticket': NotRequired[float],
+ 'rebate': NotRequired[float],
+ 'taxes': NotRequired[float],
+}, total=False)
+
+ModelTicketwebTicketPrice = TypedDict('ModelTicketwebTicketPrice', {
+ 'base': NotRequired[float],
+ 'fees': NotRequired[ModelTicketwebTicketFees],
+ 'max_purchase_limit': NotRequired[int],
+ 'min_purchase_limit': NotRequired[int],
+ 'name': NotRequired[str],
+ 'sold_out': NotRequired[bool],
+ 'total': NotRequired[float],
+}, total=False)
+
+ModelTicketwebTicketSection = TypedDict('ModelTicketwebTicketSection', {
+ 'name': NotRequired[str],
+ 'prices': NotRequired[list[ModelTicketwebTicketPrice]],
+ 'purchase_limit': NotRequired[int],
+ 'sold_out': NotRequired[bool],
+}, total=False)
+
+ModelTicketwebVenueDetail = TypedDict('ModelTicketwebVenueDetail', {
+ 'address': NotRequired[str],
+ 'id': NotRequired[str],
+ 'name': NotRequired[str],
+ 'url': NotRequired[str],
+}, total=False)
+
+ModelTicketwebVenueRef = TypedDict('ModelTicketwebVenueRef', {
+ 'address': NotRequired[str],
+ 'name': NotRequired[str],
+ 'url': NotRequired[str],
+}, total=False)
+
+ModelTicketwebVenueResponse = TypedDict('ModelTicketwebVenueResponse', {
+ 'count': NotRequired[int],
+ 'events': NotRequired[list[ModelTicketwebEventSummary]],
+ 'fetched_at': NotRequired[str],
+ 'page': NotRequired[int],
+ 'source_url': NotRequired[str],
+ 'venue': NotRequired[ModelTicketwebVenueDetail],
+}, total=False)
+
+ModelTicketwebEventResponseDoc = TypedDict('ModelTicketwebEventResponseDoc', {
+ 'code': NotRequired[int],
+ 'data': NotRequired[ModelTicketwebEventResponse],
+ 'msg': NotRequired[str],
+}, total=False)
+
+ModelTicketwebSearchResponseDoc = TypedDict('ModelTicketwebSearchResponseDoc', {
+ 'code': NotRequired[int],
+ 'data': NotRequired[ModelTicketwebSearchResponse],
+ 'msg': NotRequired[str],
+}, total=False)
+
+ModelTicketwebVenueResponseDoc = TypedDict('ModelTicketwebVenueResponseDoc', {
+ 'code': NotRequired[int],
+ 'data': NotRequired[ModelTicketwebVenueResponse],
+ 'msg': NotRequired[str],
+}, total=False)
+
ModelTiktokCategory = TypedDict('ModelTiktokCategory', {
'name': NotRequired[str],
'type': NotRequired[str],
@@ -30493,6 +30765,19 @@ ModelWebTechStackOption = TypedDict('ModelWebTechStackOption', {
'url': Required[str],
}, total=False)
+ModelWebTechStackResult = TypedDict('ModelWebTechStackResult', {
+ 'categories': NotRequired[list[str]],
+ 'count': NotRequired[int],
+ 'detector_version': NotRequired[str],
+ 'failure_reason': NotRequired[str],
+ 'final_url': NotRequired[str],
+ 'is_infrastructure': NotRequired[bool],
+ 'reachable': NotRequired[bool],
+ 'technologies': NotRequired[list[ModelTechstackTechnology]],
+ 'unmatched_evidence': NotRequired[ModelTechstackUnmatchedEvidence],
+ 'url': NotRequired[str],
+}, total=False)
+
ModelWebBillingRejectionDoc = TypedDict('ModelWebBillingRejectionDoc', {
'credit_cost': NotRequired[int],
'credits_included': NotRequired[int],
@@ -30526,7 +30811,7 @@ ModelWebScrapeResponseDoc = TypedDict('ModelWebScrapeResponseDoc', {
ModelWebTechStackResponseDoc = TypedDict('ModelWebTechStackResponseDoc', {
'code': NotRequired[int],
- 'data': NotRequired[ModelTechstackResult],
+ 'data': NotRequired[ModelWebTechStackResult],
'msg': NotRequired[str],
}, total=False)
@@ -38098,6 +38383,7 @@ DatasetsTechstackFacetsParams = TypedDict('DatasetsTechstackFacetsParams', {
'render_tier': NotRequired[Literal['http', 'browser']],
'seed_source': NotRequired[str],
'has_captcha': NotRequired[bool],
+ 'is_infrastructure': NotRequired[bool],
'reachable': NotRequired[bool],
'min_tech_count': NotRequired[int],
'run_id': NotRequired[str],
@@ -38130,6 +38416,7 @@ DatasetsTechstackSearchParams = TypedDict('DatasetsTechstackSearchParams', {
'render_tier': NotRequired[Literal['http', 'browser']],
'seed_source': NotRequired[str],
'has_captcha': NotRequired[bool],
+ 'is_infrastructure': NotRequired[bool],
'reachable': NotRequired[bool],
'min_tech_count': NotRequired[int],
'run_id': NotRequired[str],
@@ -46499,6 +46786,24 @@ TicketmasterAttractionEventsParams = TypedDict('TicketmasterAttractionEventsPara
'sort': NotRequired[Literal['relevance', 'date']],
}, total=False)
+TicketmasterAttractionRelatedResponse = ModelTicketmasterAttractionRelatedResponseDoc
+TicketmasterAttractionRelatedParams = TypedDict('TicketmasterAttractionRelatedParams', {
+ '_response_type': NotRequired[ResponseType],
+ '_timeout': NotRequired[float],
+ '_headers': NotRequired[Mapping[str, str]],
+ 'id': Required[str],
+}, total=False)
+
+TicketmasterAttractionReviewsResponse = ModelTicketmasterAttractionReviewsResponseDoc
+TicketmasterAttractionReviewsParams = TypedDict('TicketmasterAttractionReviewsParams', {
+ '_response_type': NotRequired[ResponseType],
+ '_timeout': NotRequired[float],
+ '_headers': NotRequired[Mapping[str, str]],
+ 'id': Required[str],
+ 'offset': NotRequired[int],
+ 'limit': NotRequired[int],
+}, total=False)
+
TicketmasterDiscoverCategoriesResponse = ModelTicketmasterCategoriesResponseDoc
TicketmasterDiscoverCategoriesParams = TypedDict('TicketmasterDiscoverCategoriesParams', {
'_response_type': NotRequired[ResponseType],
@@ -46564,6 +46869,13 @@ TicketmasterSuggestParams = TypedDict('TicketmasterSuggestParams', {
'q': Required[str],
}, total=False)
+TicketmasterTrendingAttractionsResponse = ModelTicketmasterTrendingAttractionsResponseDoc
+TicketmasterTrendingAttractionsParams = TypedDict('TicketmasterTrendingAttractionsParams', {
+ '_response_type': NotRequired[ResponseType],
+ '_timeout': NotRequired[float],
+ '_headers': NotRequired[Mapping[str, str]],
+}, total=False)
+
TicketmasterVenueResponse = ModelTicketmasterVenueResponseDoc
TicketmasterVenueParams = TypedDict('TicketmasterVenueParams', {
'_response_type': NotRequired[ResponseType],
@@ -46572,6 +46884,14 @@ TicketmasterVenueParams = TypedDict('TicketmasterVenueParams', {
'id': Required[str],
}, total=False)
+TicketmasterVenueEnhancedDetailsResponse = ModelTicketmasterVenueEnhancedDetailsResponseDoc
+TicketmasterVenueEnhancedDetailsParams = TypedDict('TicketmasterVenueEnhancedDetailsParams', {
+ '_response_type': NotRequired[ResponseType],
+ '_timeout': NotRequired[float],
+ '_headers': NotRequired[Mapping[str, str]],
+ 'id': Required[str],
+}, total=False)
+
TicketmasterVenueEventsResponse = ModelTicketmasterEventsResponseDoc
TicketmasterVenueEventsParams = TypedDict('TicketmasterVenueEventsParams', {
'_response_type': NotRequired[ResponseType],
@@ -46582,6 +46902,32 @@ TicketmasterVenueEventsParams = TypedDict('TicketmasterVenueEventsParams', {
'sort': NotRequired[Literal['relevance', 'date']],
}, total=False)
+TicketWebTicketwebEventResponse = ModelTicketwebEventResponseDoc
+TicketWebTicketwebEventParams = TypedDict('TicketWebTicketwebEventParams', {
+ '_response_type': NotRequired[ResponseType],
+ '_timeout': NotRequired[float],
+ '_headers': NotRequired[Mapping[str, str]],
+ 'id': Required[str],
+}, total=False)
+
+TicketWebTicketwebSearchResponse = ModelTicketwebSearchResponseDoc
+TicketWebTicketwebSearchParams = TypedDict('TicketWebTicketwebSearchParams', {
+ '_response_type': NotRequired[ResponseType],
+ '_timeout': NotRequired[float],
+ '_headers': NotRequired[Mapping[str, str]],
+ 'q': Required[str],
+ 'page': NotRequired[int],
+}, total=False)
+
+TicketWebTicketwebVenueResponse = ModelTicketwebVenueResponseDoc
+TicketWebTicketwebVenueParams = TypedDict('TicketWebTicketwebVenueParams', {
+ '_response_type': NotRequired[ResponseType],
+ '_timeout': NotRequired[float],
+ '_headers': NotRequired[Mapping[str, str]],
+ 'id': Required[str],
+ 'page': NotRequired[int],
+}, total=False)
+
TiktokCategoryResponse = ModelTiktokCategoryResponseDoc
TiktokCategoryParams = TypedDict('TiktokCategoryParams', {
'_response_type': NotRequired[ResponseType],
@@ -50312,6 +50658,8 @@ class ThreadsGroup:
class TicketmasterGroup:
def attraction(self, **params: Unpack[TicketmasterAttractionParams]) -> TicketmasterAttractionResponse: ...
def attraction_events(self, **params: Unpack[TicketmasterAttractionEventsParams]) -> TicketmasterAttractionEventsResponse: ...
+ def attraction_related(self, **params: Unpack[TicketmasterAttractionRelatedParams]) -> TicketmasterAttractionRelatedResponse: ...
+ def attraction_reviews(self, **params: Unpack[TicketmasterAttractionReviewsParams]) -> TicketmasterAttractionReviewsResponse: ...
def discover_categories(self, **params: Unpack[TicketmasterDiscoverCategoriesParams]) -> TicketmasterDiscoverCategoriesResponse: ...
def discover_category_events(self, **params: Unpack[TicketmasterDiscoverCategoryEventsParams]) -> TicketmasterDiscoverCategoryEventsResponse: ...
def discover_cities(self, **params: Unpack[TicketmasterDiscoverCitiesParams]) -> TicketmasterDiscoverCitiesResponse: ...
@@ -50319,9 +50667,16 @@ class TicketmasterGroup:
def event(self, **params: Unpack[TicketmasterEventParams]) -> TicketmasterEventResponse: ...
def search_events(self, **params: Unpack[TicketmasterSearchEventsParams]) -> TicketmasterSearchEventsResponse: ...
def suggest(self, **params: Unpack[TicketmasterSuggestParams]) -> TicketmasterSuggestResponse: ...
+ def trending_attractions(self, **params: Unpack[TicketmasterTrendingAttractionsParams]) -> TicketmasterTrendingAttractionsResponse: ...
def venue(self, **params: Unpack[TicketmasterVenueParams]) -> TicketmasterVenueResponse: ...
+ def venue_enhanced_details(self, **params: Unpack[TicketmasterVenueEnhancedDetailsParams]) -> TicketmasterVenueEnhancedDetailsResponse: ...
def venue_events(self, **params: Unpack[TicketmasterVenueEventsParams]) -> TicketmasterVenueEventsResponse: ...
+class TicketWebGroup:
+ def ticketweb_event(self, **params: Unpack[TicketWebTicketwebEventParams]) -> TicketWebTicketwebEventResponse: ...
+ def ticketweb_search(self, **params: Unpack[TicketWebTicketwebSearchParams]) -> TicketWebTicketwebSearchResponse: ...
+ def ticketweb_venue(self, **params: Unpack[TicketWebTicketwebVenueParams]) -> TicketWebTicketwebVenueResponse: ...
+
class TiktokGroup:
def category(self, **params: Unpack[TiktokCategoryParams]) -> TiktokCategoryResponse: ...
def video_comments(self, **params: Unpack[TiktokVideoCommentsParams]) -> TiktokVideoCommentsResponse: ...
@@ -51854,6 +52209,8 @@ OperationId = Literal[
'threads-search',
'ticketmaster-attraction',
'ticketmaster-attraction-events',
+ 'ticketmaster-attraction-related',
+ 'ticketmaster-attraction-reviews',
'ticketmaster-discover-categories',
'ticketmaster-discover-category-events',
'ticketmaster-discover-cities',
@@ -51861,8 +52218,13 @@ OperationId = Literal[
'ticketmaster-event',
'ticketmaster-search-events',
'ticketmaster-suggest',
+ 'ticketmaster-trending-attractions',
'ticketmaster-venue',
+ 'ticketmaster-venue-enhanced-details',
'ticketmaster-venue-events',
+ 'ticketweb-event',
+ 'ticketweb-search',
+ 'ticketweb-venue',
'tiktok-category',
'tiktok-video-comments',
'tiktok-creative-center-hashtags',
@@ -52237,6 +52599,7 @@ class CrawloraClient:
the_body_shop: TheBodyShopGroup
threads: ThreadsGroup
ticketmaster: TicketmasterGroup
+ ticket_web: TicketWebGroup
tiktok: TiktokGroup
tmdb: TmdbGroup
trip_advisor: TripAdvisorGroup
@@ -66863,6 +67226,30 @@ class CrawloraClient:
retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
) -> TicketmasterAttractionEventsResponse: ...
@overload
+ def operation(
+ self,
+ operation_id: Literal['ticketmaster-attraction-related'],
+ params: TicketmasterAttractionRelatedParams,
+ *,
+ response_type: ResponseType = ...,
+ timeout: float | None = ...,
+ headers: Mapping[str, str] | None = ...,
+ retries: int | None = ...,
+ retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
+ ) -> TicketmasterAttractionRelatedResponse: ...
+ @overload
+ def operation(
+ self,
+ operation_id: Literal['ticketmaster-attraction-reviews'],
+ params: TicketmasterAttractionReviewsParams,
+ *,
+ response_type: ResponseType = ...,
+ timeout: float | None = ...,
+ headers: Mapping[str, str] | None = ...,
+ retries: int | None = ...,
+ retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
+ ) -> TicketmasterAttractionReviewsResponse: ...
+ @overload
def operation(
self,
operation_id: Literal['ticketmaster-discover-categories'],
@@ -66947,6 +67334,18 @@ class CrawloraClient:
retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
) -> TicketmasterSuggestResponse: ...
@overload
+ def operation(
+ self,
+ operation_id: Literal['ticketmaster-trending-attractions'],
+ params: TicketmasterTrendingAttractionsParams = ...,
+ *,
+ response_type: ResponseType = ...,
+ timeout: float | None = ...,
+ headers: Mapping[str, str] | None = ...,
+ retries: int | None = ...,
+ retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
+ ) -> TicketmasterTrendingAttractionsResponse: ...
+ @overload
def operation(
self,
operation_id: Literal['ticketmaster-venue'],
@@ -66959,6 +67358,18 @@ class CrawloraClient:
retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
) -> TicketmasterVenueResponse: ...
@overload
+ def operation(
+ self,
+ operation_id: Literal['ticketmaster-venue-enhanced-details'],
+ params: TicketmasterVenueEnhancedDetailsParams,
+ *,
+ response_type: ResponseType = ...,
+ timeout: float | None = ...,
+ headers: Mapping[str, str] | None = ...,
+ retries: int | None = ...,
+ retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
+ ) -> TicketmasterVenueEnhancedDetailsResponse: ...
+ @overload
def operation(
self,
operation_id: Literal['ticketmaster-venue-events'],
@@ -66971,6 +67382,42 @@ class CrawloraClient:
retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
) -> TicketmasterVenueEventsResponse: ...
@overload
+ def operation(
+ self,
+ operation_id: Literal['ticketweb-event'],
+ params: TicketWebTicketwebEventParams,
+ *,
+ response_type: ResponseType = ...,
+ timeout: float | None = ...,
+ headers: Mapping[str, str] | None = ...,
+ retries: int | None = ...,
+ retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
+ ) -> TicketWebTicketwebEventResponse: ...
+ @overload
+ def operation(
+ self,
+ operation_id: Literal['ticketweb-search'],
+ params: TicketWebTicketwebSearchParams,
+ *,
+ response_type: ResponseType = ...,
+ timeout: float | None = ...,
+ headers: Mapping[str, str] | None = ...,
+ retries: int | None = ...,
+ retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
+ ) -> TicketWebTicketwebSearchResponse: ...
+ @overload
+ def operation(
+ self,
+ operation_id: Literal['ticketweb-venue'],
+ params: TicketWebTicketwebVenueParams,
+ *,
+ response_type: ResponseType = ...,
+ timeout: float | None = ...,
+ headers: Mapping[str, str] | None = ...,
+ retries: int | None = ...,
+ retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
+ ) -> TicketWebTicketwebVenueResponse: ...
+ @overload
def operation(
self,
operation_id: Literal['tiktok-category'],
@@ -84491,6 +84938,30 @@ class CrawloraClient:
retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
) -> TicketmasterAttractionEventsResponse: ...
@overload
+ def request(
+ self,
+ operation_id: Literal['ticketmaster-attraction-related'],
+ params: TicketmasterAttractionRelatedParams,
+ *,
+ response_type: ResponseType = ...,
+ timeout: float | None = ...,
+ headers: Mapping[str, str] | None = ...,
+ retries: int | None = ...,
+ retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
+ ) -> TicketmasterAttractionRelatedResponse: ...
+ @overload
+ def request(
+ self,
+ operation_id: Literal['ticketmaster-attraction-reviews'],
+ params: TicketmasterAttractionReviewsParams,
+ *,
+ response_type: ResponseType = ...,
+ timeout: float | None = ...,
+ headers: Mapping[str, str] | None = ...,
+ retries: int | None = ...,
+ retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
+ ) -> TicketmasterAttractionReviewsResponse: ...
+ @overload
def request(
self,
operation_id: Literal['ticketmaster-discover-categories'],
@@ -84575,6 +85046,18 @@ class CrawloraClient:
retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
) -> TicketmasterSuggestResponse: ...
@overload
+ def request(
+ self,
+ operation_id: Literal['ticketmaster-trending-attractions'],
+ params: TicketmasterTrendingAttractionsParams = ...,
+ *,
+ response_type: ResponseType = ...,
+ timeout: float | None = ...,
+ headers: Mapping[str, str] | None = ...,
+ retries: int | None = ...,
+ retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
+ ) -> TicketmasterTrendingAttractionsResponse: ...
+ @overload
def request(
self,
operation_id: Literal['ticketmaster-venue'],
@@ -84587,6 +85070,18 @@ class CrawloraClient:
retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
) -> TicketmasterVenueResponse: ...
@overload
+ def request(
+ self,
+ operation_id: Literal['ticketmaster-venue-enhanced-details'],
+ params: TicketmasterVenueEnhancedDetailsParams,
+ *,
+ response_type: ResponseType = ...,
+ timeout: float | None = ...,
+ headers: Mapping[str, str] | None = ...,
+ retries: int | None = ...,
+ retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
+ ) -> TicketmasterVenueEnhancedDetailsResponse: ...
+ @overload
def request(
self,
operation_id: Literal['ticketmaster-venue-events'],
@@ -84599,6 +85094,42 @@ class CrawloraClient:
retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
) -> TicketmasterVenueEventsResponse: ...
@overload
+ def request(
+ self,
+ operation_id: Literal['ticketweb-event'],
+ params: TicketWebTicketwebEventParams,
+ *,
+ response_type: ResponseType = ...,
+ timeout: float | None = ...,
+ headers: Mapping[str, str] | None = ...,
+ retries: int | None = ...,
+ retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
+ ) -> TicketWebTicketwebEventResponse: ...
+ @overload
+ def request(
+ self,
+ operation_id: Literal['ticketweb-search'],
+ params: TicketWebTicketwebSearchParams,
+ *,
+ response_type: ResponseType = ...,
+ timeout: float | None = ...,
+ headers: Mapping[str, str] | None = ...,
+ retries: int | None = ...,
+ retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
+ ) -> TicketWebTicketwebSearchResponse: ...
+ @overload
+ def request(
+ self,
+ operation_id: Literal['ticketweb-venue'],
+ params: TicketWebTicketwebVenueParams,
+ *,
+ response_type: ResponseType = ...,
+ timeout: float | None = ...,
+ headers: Mapping[str, str] | None = ...,
+ retries: int | None = ...,
+ retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
+ ) -> TicketWebTicketwebVenueResponse: ...
+ @overload
def request(
self,
operation_id: Literal['tiktok-category'],
diff --git a/crawlora/operations.py b/crawlora/operations.py
index a4f602b..b23202a 100644
--- a/crawlora/operations.py
+++ b/crawlora/operations.py
@@ -8254,6 +8254,7 @@
'type': 'string'},
{'in': 'query', 'name': 'seed_source', 'type': 'string'},
{'in': 'query', 'name': 'has_captcha', 'type': 'boolean'},
+ {'in': 'query', 'name': 'is_infrastructure', 'type': 'boolean'},
{'in': 'query', 'name': 'reachable', 'type': 'boolean'},
{'in': 'query', 'name': 'min_tech_count', 'type': 'integer'},
{'in': 'query', 'name': 'run_id', 'type': 'string'}],
@@ -8305,6 +8306,7 @@
'type': 'string'},
{'in': 'query', 'name': 'seed_source', 'type': 'string'},
{'in': 'query', 'name': 'has_captcha', 'type': 'boolean'},
+ {'in': 'query', 'name': 'is_infrastructure', 'type': 'boolean'},
{'in': 'query', 'name': 'reachable', 'type': 'boolean'},
{'in': 'query', 'name': 'min_tech_count', 'type': 'integer'},
{'in': 'query', 'name': 'run_id', 'type': 'string'},
@@ -21141,6 +21143,31 @@
'name': 'sort',
'type': 'string'}],
'security': ['ApiKeyAuth']},
+ 'ticketmaster-attraction-related': {'bodyParam': None,
+ 'bodyRequired': False,
+ 'consumes': ['application/json'],
+ 'formParams': [],
+ 'id': 'ticketmaster-attraction-related',
+ 'method': 'GET',
+ 'path': '/ticketmaster/attraction-related',
+ 'pathParams': [],
+ 'produces': ['application/json'],
+ 'queryParams': [{'in': 'query', 'name': 'id', 'required': True, 'type': 'string'}],
+ 'security': ['ApiKeyAuth']},
+ 'ticketmaster-attraction-reviews': {'bodyParam': None,
+ 'bodyRequired': False,
+ 'consumes': ['application/json'],
+ 'formParams': [],
+ 'id': 'ticketmaster-attraction-reviews',
+ 'method': 'GET',
+ 'paginatable': True,
+ 'path': '/ticketmaster/attraction-reviews',
+ 'pathParams': [],
+ 'produces': ['application/json'],
+ 'queryParams': [{'in': 'query', 'name': 'id', 'required': True, 'type': 'string'},
+ {'in': 'query', 'name': 'offset', 'type': 'integer'},
+ {'in': 'query', 'name': 'limit', 'type': 'integer'}],
+ 'security': ['ApiKeyAuth']},
'ticketmaster-discover-categories': {'bodyParam': None,
'bodyRequired': False,
'consumes': [],
@@ -21244,6 +21271,17 @@
'produces': ['application/json'],
'queryParams': [{'in': 'query', 'name': 'q', 'required': True, 'type': 'string'}],
'security': ['ApiKeyAuth']},
+ 'ticketmaster-trending-attractions': {'bodyParam': None,
+ 'bodyRequired': False,
+ 'consumes': ['application/json'],
+ 'formParams': [],
+ 'id': 'ticketmaster-trending-attractions',
+ 'method': 'GET',
+ 'path': '/ticketmaster/trending-attractions',
+ 'pathParams': [],
+ 'produces': ['application/json'],
+ 'queryParams': [],
+ 'security': ['ApiKeyAuth']},
'ticketmaster-venue': {'bodyParam': None,
'bodyRequired': False,
'consumes': ['application/json'],
@@ -21255,6 +21293,20 @@
'produces': ['application/json'],
'queryParams': [{'in': 'query', 'name': 'id', 'required': True, 'type': 'string'}],
'security': ['ApiKeyAuth']},
+ 'ticketmaster-venue-enhanced-details': {'bodyParam': None,
+ 'bodyRequired': False,
+ 'consumes': ['application/json'],
+ 'formParams': [],
+ 'id': 'ticketmaster-venue-enhanced-details',
+ 'method': 'GET',
+ 'path': '/ticketmaster/venue-enhanced-details',
+ 'pathParams': [],
+ 'produces': ['application/json'],
+ 'queryParams': [{'in': 'query',
+ 'name': 'id',
+ 'required': True,
+ 'type': 'string'}],
+ 'security': ['ApiKeyAuth']},
'ticketmaster-venue-events': {'bodyParam': None,
'bodyRequired': False,
'consumes': ['application/json'],
@@ -21272,6 +21324,43 @@
'name': 'sort',
'type': 'string'}],
'security': ['ApiKeyAuth']},
+ 'ticketweb-event': {'bodyParam': None,
+ 'bodyRequired': False,
+ 'consumes': ['application/json'],
+ 'formParams': [],
+ 'id': 'ticketweb-event',
+ 'method': 'GET',
+ 'path': '/ticketweb/event',
+ 'pathParams': [],
+ 'produces': ['application/json'],
+ 'queryParams': [{'in': 'query', 'name': 'id', 'required': True, 'type': 'string'}],
+ 'security': ['ApiKeyAuth']},
+ 'ticketweb-search': {'bodyParam': None,
+ 'bodyRequired': False,
+ 'consumes': ['application/json'],
+ 'formParams': [],
+ 'id': 'ticketweb-search',
+ 'method': 'GET',
+ 'paginatable': True,
+ 'path': '/ticketweb/search',
+ 'pathParams': [],
+ 'produces': ['application/json'],
+ 'queryParams': [{'in': 'query', 'name': 'q', 'required': True, 'type': 'string'},
+ {'in': 'query', 'name': 'page', 'type': 'integer'}],
+ 'security': ['ApiKeyAuth']},
+ 'ticketweb-venue': {'bodyParam': None,
+ 'bodyRequired': False,
+ 'consumes': ['application/json'],
+ 'formParams': [],
+ 'id': 'ticketweb-venue',
+ 'method': 'GET',
+ 'paginatable': True,
+ 'path': '/ticketweb/venue',
+ 'pathParams': [],
+ 'produces': ['application/json'],
+ 'queryParams': [{'in': 'query', 'name': 'id', 'required': True, 'type': 'string'},
+ {'in': 'query', 'name': 'page', 'type': 'integer'}],
+ 'security': ['ApiKeyAuth']},
'tiktok-category': {'bodyParam': None,
'bodyRequired': False,
'consumes': ['application/json'],
@@ -26129,8 +26218,13 @@
'profile': 'threads-profile',
'profile_posts': 'threads-profile-posts',
'search': 'threads-search'},
+ 'ticket_web': {'ticketweb_event': 'ticketweb-event',
+ 'ticketweb_search': 'ticketweb-search',
+ 'ticketweb_venue': 'ticketweb-venue'},
'ticketmaster': {'attraction': 'ticketmaster-attraction',
'attraction_events': 'ticketmaster-attraction-events',
+ 'attraction_related': 'ticketmaster-attraction-related',
+ 'attraction_reviews': 'ticketmaster-attraction-reviews',
'discover_categories': 'ticketmaster-discover-categories',
'discover_category_events': 'ticketmaster-discover-category-events',
'discover_cities': 'ticketmaster-discover-cities',
@@ -26138,7 +26232,9 @@
'event': 'ticketmaster-event',
'search_events': 'ticketmaster-search-events',
'suggest': 'ticketmaster-suggest',
+ 'trending_attractions': 'ticketmaster-trending-attractions',
'venue': 'ticketmaster-venue',
+ 'venue_enhanced_details': 'ticketmaster-venue-enhanced-details',
'venue_events': 'ticketmaster-venue-events'},
'tiktok': {'category': 'tiktok-category',
'challenge': 'tiktok-challenge',
@@ -26370,7 +26466,7 @@
'suggest': 'zara-suggest'},
'zillow': {'autocomplete': 'zillow-autocomplete', 'property': 'zillow-property', 'search': 'zillow-search'}}
-OPERATION_COUNT = 1468
+OPERATION_COUNT = 1475
class OperationId:
ACCOUNT_DELETION_CANCEL = 'account-deletion-cancel'
@@ -27580,8 +27676,13 @@ class OperationId:
THREADS_PROFILE = 'threads-profile'
THREADS_PROFILE_POSTS = 'threads-profile-posts'
THREADS_SEARCH = 'threads-search'
+ TICKET_WEB_TICKETWEB_EVENT = 'ticketweb-event'
+ TICKET_WEB_TICKETWEB_SEARCH = 'ticketweb-search'
+ TICKET_WEB_TICKETWEB_VENUE = 'ticketweb-venue'
TICKETMASTER_ATTRACTION = 'ticketmaster-attraction'
TICKETMASTER_ATTRACTION_EVENTS = 'ticketmaster-attraction-events'
+ TICKETMASTER_ATTRACTION_RELATED = 'ticketmaster-attraction-related'
+ TICKETMASTER_ATTRACTION_REVIEWS = 'ticketmaster-attraction-reviews'
TICKETMASTER_DISCOVER_CATEGORIES = 'ticketmaster-discover-categories'
TICKETMASTER_DISCOVER_CATEGORY_EVENTS = 'ticketmaster-discover-category-events'
TICKETMASTER_DISCOVER_CITIES = 'ticketmaster-discover-cities'
@@ -27589,7 +27690,9 @@ class OperationId:
TICKETMASTER_EVENT = 'ticketmaster-event'
TICKETMASTER_SEARCH_EVENTS = 'ticketmaster-search-events'
TICKETMASTER_SUGGEST = 'ticketmaster-suggest'
+ TICKETMASTER_TRENDING_ATTRACTIONS = 'ticketmaster-trending-attractions'
TICKETMASTER_VENUE = 'ticketmaster-venue'
+ TICKETMASTER_VENUE_ENHANCED_DETAILS = 'ticketmaster-venue-enhanced-details'
TICKETMASTER_VENUE_EVENTS = 'ticketmaster-venue-events'
TIKTOK_CATEGORY = 'tiktok-category'
TIKTOK_CHALLENGE = 'tiktok-challenge'
diff --git a/docs/operations.md b/docs/operations.md
index 84b02cd..17dc71d 100644
--- a/docs/operations.md
+++ b/docs/operations.md
@@ -2,7 +2,7 @@
Generated from `openapi/public.json`. Deprecated, admin, and internal operations are excluded from this SDK contract.
-Total operations: `1468`
+Total operations: `1475`
| Group | SDK method | Operation ID | HTTP | Params | Auth | Response | Notes |
| --- | --- | --- | --- | --- | --- | --- | --- |
@@ -369,9 +369,9 @@ Total operations: `1468`
| datasets | `datasets.steam_playercounts_search` | `datasets-steam-playercounts-search` | `GET /datasets/steam-playercounts/search` | `app_id` (query str)
`date` (query str)
`sort` (query Literal['date_desc', 'date_asc', 'players_desc'])
`page` (query int)
`page_size` (query int) | `ApiKeyAuth` | `DatasetsSteamPlayercountsSearchResponse` | |
| datasets | `datasets.steam_prices_search` | `datasets-steam-prices-search` | `GET /datasets/steam-prices/search` | `app_id` (query str)
`date` (query str)
`sort` (query Literal['date_desc', 'date_asc', 'price_asc', 'price_desc', 'discount_desc'])
`page` (query int)
`page_size` (query int) | `ApiKeyAuth` | `DatasetsSteamPricesSearchResponse` | |
| datasets | `datasets.steam_reviews_search` | `datasets-steam-reviews-search` | `GET /datasets/steam-reviews/search` | `q` (query str)
`app_id` (query str)
`language` (query str)
`voted_up` (query str)
`sort` (query Literal['votes_desc', 'weighted_desc', 'date_desc'])
`page` (query int)
`page_size` (query int) | `ApiKeyAuth` | `DatasetsSteamReviewsSearchResponse` | |
-| datasets | `datasets.techstack_facets` | `datasets-techstack-facets` | `GET /datasets/techstack/facets` | `facet` (query Literal['technology', 'category', 'cms', 'ecommerce', 'cdn', 'web_server', 'server_language', 'analytics', 'tld', 'render_tier', 'seed_source'] required)
`q` (query str)
`technology` (query list[str])
`any_of` (query list[str])
`not` (query list[str])
`category` (query str)
`cms` (query str)
`ecommerce` (query str)
`cdn` (query str)
`web_server` (query str)
`server_language` (query str)
`tld` (query str)
`render_tier` (query Literal['http', 'browser'])
`seed_source` (query str)
`has_captcha` (query bool)
`reachable` (query bool)
`min_tech_count` (query int)
`run_id` (query str) | `ApiKeyAuth` | `DatasetsTechstackFacetsResponse` | |
+| datasets | `datasets.techstack_facets` | `datasets-techstack-facets` | `GET /datasets/techstack/facets` | `facet` (query Literal['technology', 'category', 'cms', 'ecommerce', 'cdn', 'web_server', 'server_language', 'analytics', 'tld', 'render_tier', 'seed_source'] required)
`q` (query str)
`technology` (query list[str])
`any_of` (query list[str])
`not` (query list[str])
`category` (query str)
`cms` (query str)
`ecommerce` (query str)
`cdn` (query str)
`web_server` (query str)
`server_language` (query str)
`tld` (query str)
`render_tier` (query Literal['http', 'browser'])
`seed_source` (query str)
`has_captcha` (query bool)
`is_infrastructure` (query bool)
`reachable` (query bool)
`min_tech_count` (query int)
`run_id` (query str) | `ApiKeyAuth` | `DatasetsTechstackFacetsResponse` | |
| datasets | `datasets.techstack_item` | `datasets-techstack-item` | `GET /datasets/techstack/items/{domain}` | `domain` (path str required) | `ApiKeyAuth` | `DatasetsTechstackItemResponse` | |
-| datasets | `datasets.techstack_search` | `datasets-techstack-search` | `GET /datasets/techstack/search` | `q` (query str)
`technology` (query list[str])
`any_of` (query list[str])
`not` (query list[str])
`category` (query str)
`cms` (query str)
`ecommerce` (query str)
`cdn` (query str)
`web_server` (query str)
`server_language` (query str)
`tld` (query str)
`render_tier` (query Literal['http', 'browser'])
`seed_source` (query str)
`has_captcha` (query bool)
`reachable` (query bool)
`min_tech_count` (query int)
`run_id` (query str)
`sort` (query Literal['relevance', 'rank_asc', 'tech_count_desc', 'domain_asc', 'crawled_desc'])
`page` (query int)
`page_size` (query int) | `ApiKeyAuth` | `DatasetsTechstackSearchResponse` | |
+| datasets | `datasets.techstack_search` | `datasets-techstack-search` | `GET /datasets/techstack/search` | `q` (query str)
`technology` (query list[str])
`any_of` (query list[str])
`not` (query list[str])
`category` (query str)
`cms` (query str)
`ecommerce` (query str)
`cdn` (query str)
`web_server` (query str)
`server_language` (query str)
`tld` (query str)
`render_tier` (query Literal['http', 'browser'])
`seed_source` (query str)
`has_captcha` (query bool)
`is_infrastructure` (query bool)
`reachable` (query bool)
`min_tech_count` (query int)
`run_id` (query str)
`sort` (query Literal['relevance', 'rank_asc', 'tech_count_desc', 'domain_asc', 'crawled_desc'])
`page` (query int)
`page_size` (query int) | `ApiKeyAuth` | `DatasetsTechstackSearchResponse` | |
| datasets | `datasets.trustmrr_facets` | `datasets-trustmrr-facets` | `GET /datasets/trustmrr/facets` | `facet` (query Literal['category', 'country', 'payment_provider', 'target_audience', 'business_type', 'tech', 'channels', 'listing_tier', 'status', 'on_sale', 'is_sponsored', 'tags'] required)
`q` (query str)
`category` (query str)
`country` (query str)
`payment_provider` (query str)
`on_sale` (query bool)
`min_mrr` (query float) | `ApiKeyAuth` | `DatasetsTrustmrrFacetsResponse` | |
| datasets | `datasets.trustmrr_history` | `datasets-trustmrr-history` | `GET /datasets/trustmrr/history/{slug}` | `slug` (path str required)
`from` (query str)
`to` (query str)
`limit` (query int) | `ApiKeyAuth` | `DatasetsTrustmrrHistoryResponse` | |
| datasets | `datasets.trustmrr_item` | `datasets-trustmrr-item` | `GET /datasets/trustmrr/items/{slug}` | `slug` (path str required) | `ApiKeyAuth` | `DatasetsTrustmrrItemResponse` | |
@@ -1217,6 +1217,8 @@ Total operations: `1468`
| threads | `threads.search` | `threads-search` | `GET /threads/search` | `q` (query str required) | `ApiKeyAuth` | `ThreadsSearchResponse` | |
| ticketmaster | `ticketmaster.attraction` | `ticketmaster-attraction` | `GET /ticketmaster/attraction` | `id` (query str required) | `ApiKeyAuth` | `TicketmasterAttractionResponse` | |
| ticketmaster | `ticketmaster.attraction_events` | `ticketmaster-attraction-events` | `GET /ticketmaster/attraction-events` | `id` (query str required)
`page` (query int)
`sort` (query Literal['relevance', 'date']) | `ApiKeyAuth` | `TicketmasterAttractionEventsResponse` | |
+| ticketmaster | `ticketmaster.attraction_related` | `ticketmaster-attraction-related` | `GET /ticketmaster/attraction-related` | `id` (query str required) | `ApiKeyAuth` | `TicketmasterAttractionRelatedResponse` | |
+| ticketmaster | `ticketmaster.attraction_reviews` | `ticketmaster-attraction-reviews` | `GET /ticketmaster/attraction-reviews` | `id` (query str required)
`offset` (query int)
`limit` (query int) | `ApiKeyAuth` | `TicketmasterAttractionReviewsResponse` | |
| ticketmaster | `ticketmaster.discover_categories` | `ticketmaster-discover-categories` | `GET /ticketmaster/discover-categories` | `section` (query Literal['all', 'concerts', 'sports', 'arts-theater', 'family'])
`page` (query int)
`per_page` (query int) | `ApiKeyAuth` | `TicketmasterDiscoverCategoriesResponse` | |
| ticketmaster | `ticketmaster.discover_category_events` | `ticketmaster-discover-category-events` | `GET /ticketmaster/discover-category-events` | `category_id` (query str required)
`page` (query int) | `ApiKeyAuth` | `TicketmasterDiscoverCategoryEventsResponse` | |
| ticketmaster | `ticketmaster.discover_cities` | `ticketmaster-discover-cities` | `GET /ticketmaster/discover-cities` | `country` (query str)
`page` (query int)
`per_page` (query int) | `ApiKeyAuth` | `TicketmasterDiscoverCitiesResponse` | |
@@ -1224,8 +1226,13 @@ Total operations: `1468`
| ticketmaster | `ticketmaster.event` | `ticketmaster-event` | `GET /ticketmaster/event` | `id` (query str required) | `ApiKeyAuth` | `TicketmasterEventResponse` | |
| ticketmaster | `ticketmaster.search_events` | `ticketmaster-search-events` | `GET /ticketmaster/search-events` | `q` (query str required)
`page` (query int)
`sort` (query Literal['relevance', 'date']) | `ApiKeyAuth` | `TicketmasterSearchEventsResponse` | |
| ticketmaster | `ticketmaster.suggest` | `ticketmaster-suggest` | `GET /ticketmaster/suggest` | `q` (query str required) | `ApiKeyAuth` | `TicketmasterSuggestResponse` | |
+| ticketmaster | `ticketmaster.trending_attractions` | `ticketmaster-trending-attractions` | `GET /ticketmaster/trending-attractions` | none | `ApiKeyAuth` | `TicketmasterTrendingAttractionsResponse` | |
| ticketmaster | `ticketmaster.venue` | `ticketmaster-venue` | `GET /ticketmaster/venue` | `id` (query str required) | `ApiKeyAuth` | `TicketmasterVenueResponse` | |
+| ticketmaster | `ticketmaster.venue_enhanced_details` | `ticketmaster-venue-enhanced-details` | `GET /ticketmaster/venue-enhanced-details` | `id` (query str required) | `ApiKeyAuth` | `TicketmasterVenueEnhancedDetailsResponse` | |
| ticketmaster | `ticketmaster.venue_events` | `ticketmaster-venue-events` | `GET /ticketmaster/venue-events` | `id` (query str required)
`page` (query int)
`sort` (query Literal['relevance', 'date']) | `ApiKeyAuth` | `TicketmasterVenueEventsResponse` | |
+| ticket_web | `ticket_web.ticketweb_event` | `ticketweb-event` | `GET /ticketweb/event` | `id` (query str required) | `ApiKeyAuth` | `TicketWebTicketwebEventResponse` | |
+| ticket_web | `ticket_web.ticketweb_search` | `ticketweb-search` | `GET /ticketweb/search` | `q` (query str required)
`page` (query int) | `ApiKeyAuth` | `TicketWebTicketwebSearchResponse` | |
+| ticket_web | `ticket_web.ticketweb_venue` | `ticketweb-venue` | `GET /ticketweb/venue` | `id` (query str required)
`page` (query int) | `ApiKeyAuth` | `TicketWebTicketwebVenueResponse` | |
| tiktok | `tiktok.category` | `tiktok-category` | `GET /tiktok/category` | none | `ApiKeyAuth` | `TiktokCategoryResponse` | |
| tiktok | `tiktok.video_comments` | `tiktok-video-comments` | `GET /tiktok/comments` | `aweme_id` (query str required)
`cursor` (query int) | `ApiKeyAuth` | `TiktokVideoCommentsResponse` | |
| tiktok | `tiktok.creative_center_hashtags` | `tiktok-creative-center-hashtags` | `GET /tiktok/creative-center/hashtags` | `country_code` (query str required)
`period` (query Literal['7', '30']) | `ApiKeyAuth` | `TiktokCreativeCenterHashtagsResponse` | |
diff --git a/openapi/public.json b/openapi/public.json
index e8305da..03afdb3 100644
--- a/openapi/public.json
+++ b/openapi/public.json
@@ -915,7 +915,7 @@
"agoda.DetailResponse": {
"properties": {
"accommodation_type": {
- "description": "AccommodationType is Agoda's own numeric property-type code\n(contentSummary.accommodationType), confirmed live 2026-08-05 --\nsee notes/agoda-maintenance.md for the full set of codes observed.\nKnown values: 34 = Hotel, 33 = Hostel, 37 = Resort, 120 = Apartment.",
+ "description": "AccommodationType is Agoda's own numeric property-type code\n(contentSummary.accommodationType), confirmed live 2026-08-05.\nKnown values: 34 = Hotel, 33 = Hostel, 37 = Resort, 120 = Apartment.",
"example": 34,
"type": "integer"
},
@@ -965,7 +965,7 @@
"type": "number"
},
"source_url": {
- "description": "SourceURL is a real, live-verified Agoda URL that resolves directly to\nthis property (Agoda's own affiliate redirect target), even though it\nis not the pretty slug-based hotel page -- see notes/agoda-maintenance.md.",
+ "description": "SourceURL is a real, live-verified Agoda URL that resolves directly to\nthis property (Agoda's own affiliate redirect target), even though it\nis not the pretty slug-based hotel page.",
"example": "https://www.agoda.com/search?cid=-1&selectedproperty=10637&city=9395",
"type": "string"
}
@@ -5742,7 +5742,7 @@
"type": "string"
},
"is_preorderable": {
- "description": "IsPreorderable and ProductState are what actually distinguishes a\n\"coming soon\" preorder title from an already-released one — there is\nno upstream query filter for this (confirmed no-op on every param\ntried, see notes/audible-maintenance.md), so combine\nsort_by=-ReleaseDate with filtering results on IsPreorderable\nyourself to build a \"coming soon\" view.",
+ "description": "IsPreorderable and ProductState are what actually distinguishes a\n\"coming soon\" preorder title from an already-released one — there is\nno upstream query filter for this, so combine sort_by=-ReleaseDate\nwith filtering results on IsPreorderable yourself to build a\n\"coming soon\" view.",
"type": "boolean"
},
"language": {
@@ -9937,7 +9937,7 @@
"$ref": "#/definitions/bing.SearchContext"
},
"low_confidence": {
- "description": "LowConfidence is true when Bing returned a well-formed page whose\norganic results share no significant term with the query -- a known\nupstream anomaly (see notes/bing-maintenance.md, \"Bing serves\nwrong-topic organic results for long-tail queries\") where Bing serves\nan unrelated SERP for certain multi-word queries instead of a\nchallenge page or an error. The fields above are exactly what Bing\nreturned; nothing is fabricated, reordered, or filtered. Treat a true\nvalue as a hint to double-check relevance (or retry) before trusting\nthe results, not as a guarantee they are wrong -- some low-confidence\nresponses are still perfectly good, they just didn't literally repeat\na distinctive word from the query. Omitted (false) on every ordinary\nresponse.",
+ "description": "LowConfidence is true when Bing returned a well-formed page whose\norganic results share no significant term with the query -- a known\nupstream anomaly where Bing serves an unrelated SERP for certain\nmulti-word queries instead of a challenge page or an error. The\nfields above are exactly what Bing\nreturned; nothing is fabricated, reordered, or filtered. Treat a true\nvalue as a hint to double-check relevance (or retry) before trusting\nthe results, not as a guarantee they are wrong -- some low-confidence\nresponses are still perfectly good, they just didn't literally repeat\na distinctive word from the query. Omitted (false) on every ordinary\nresponse.",
"example": false,
"type": "boolean"
},
@@ -14996,7 +14996,7 @@
"type": "string"
},
"engine_torque_lb_ft": {
- "description": "The fields below are only populated on the mobile-API-backed search\npath (Search) -- exact engine/performance numbers and listing\nmetadata the website scrape never carried. All omitempty and\nadditive; existing consumers reading only the fields above see no\nchange. See notes/carmax-maintenance.md's \"Search and vehicle detail\nmigrated onto the mobile API\" section.",
+ "description": "The fields below are only populated on the mobile-API-backed search\npath -- exact engine/performance numbers and listing metadata the\nwebsite scrape never carried. All omitempty and additive; existing\nconsumers reading only the fields above see no change.",
"example": 480,
"type": "integer"
},
@@ -15206,7 +15206,7 @@
"type": "string"
},
"engine_torque_lb_ft": {
- "description": "The fields below are only populated on the mobile-API-backed search\npath (Search) -- exact engine/performance numbers and listing\nmetadata the website scrape never carried. All omitempty and\nadditive; existing consumers reading only the fields above see no\nchange. See notes/carmax-maintenance.md's \"Search and vehicle detail\nmigrated onto the mobile API\" section.",
+ "description": "The fields below are only populated on the mobile-API-backed search\npath -- exact engine/performance numbers and listing metadata the\nwebsite scrape never carried. All omitempty and additive; existing\nconsumers reading only the fields above see no change.",
"example": 480,
"type": "integer"
},
@@ -24673,7 +24673,7 @@
"type": "string"
},
"like_count": {
- "description": "LikeCount is the listing's like count. Depop's search API only\nincludes this field when the request asks for it -- searchURL always\nrequests it (include_like_count=true), so this is populated on every\nsearch result. Confirmed live 2026-08-15 (see notes/depop-maintenance.md).",
+ "description": "LikeCount is the listing's like count. Depop's search API only\nincludes this field when the request asks for it -- this endpoint\nalways requests it, so this is populated on every search result.\nConfirmed live 2026-08-15.",
"type": "integer"
},
"location": {
@@ -28603,7 +28603,7 @@
"type": "array"
},
"next_cursor": {
- "description": "NextCursor is upstream's own pagination cursor for this listing set.\nCursor-based continuation is not yet exposed as a caller-facing input\n(see notes/ebay-maintenance.md's coverage-expansion section); this\nfield is surfaced for forward compatibility and informational use.",
+ "description": "NextCursor is upstream's own pagination cursor for this listing set.\nCursor-based continuation is not yet exposed as a caller-facing input;\nthis field is surfaced for forward compatibility and informational use.",
"type": "string"
}
},
@@ -29750,7 +29750,7 @@
"type": "string"
},
"discovery_source": {
- "description": "Crawl bookkeeping. DiscoverySource records how the CURRENT document\ncontent was obtained (last-crawl mechanism), not first-discovery\nprovenance -- v1's keyword-sweep, category-grid, and Common Crawl\ndiscovery all share one Redis queue keyed by the profile URL alone (so\nthe same business is never double-enqueued no matter how many\nsearch/category cells or CC records surface it), so a richer\nper-discovery-event location/category isn't tracked through to the\ncrawl worker, only the coarse source. See notes/bbb-dataset-maintenance.md\nand notes/public-source-cc-scans-maintenance.md.",
+ "description": "Crawl bookkeeping. DiscoverySource records how the CURRENT document\ncontent was obtained (last-crawl mechanism), not first-discovery\nprovenance -- keyword-sweep, category-grid, and Common Crawl discovery\nare deduplicated against the same business, so the same business is\nnever double-enqueued no matter how many search/category cells or CC\nrecords surface it. A richer per-discovery-event location/category\nisn't tracked, only the coarse source.",
"type": "string"
},
"entity_type": {
@@ -32423,7 +32423,7 @@
"type": "string"
},
"row_ids": {
- "description": "RowIDs[i][j] is \"/\" when Rows[i][j]'s cell links to another\nPitchBook profile, \"\" otherwise. Mirrors services/pitchbook.DataTable.RowIDs.",
+ "description": "RowIDs[i][j] is \"/\" when Rows[i][j]'s cell links to another\nPitchBook profile, \"\" otherwise.",
"items": {
"items": {
"type": "string"
@@ -33144,7 +33144,7 @@
"type": "array"
},
"reporting_currency": {
- "description": "Native-currency figures are exactly as the filer reported them (see\nReportingCurrency); the *USD fields are the same values converted at fixed\nreference rates (services/sec.CurrencyToUSD) so they can be sorted, banded\nand range-filtered ACROSS currencies. Screen on the USD fields; display the\nnative value + currency.",
+ "description": "Native-currency figures are exactly as the filer reported them (see\nReportingCurrency); the *USD fields are the same values converted at fixed\nreference rates so they can be sorted, banded and range-filtered ACROSS\ncurrencies. Screen on the USD fields; display the native value + currency.",
"type": "string"
},
"revenue_band": {
@@ -33634,7 +33634,7 @@
"type": "integer"
},
"tags": {
- "description": "Tags is the weighted community-tag taxonomy (Roguelike/Metroidvania/Cozy...),\nordered most-weighted first — the crowd tags appdetails genres omit. Populated\nby the separate tag-enrichment pass (workers/steamdb tag mode via IStoreBrowseService),\nnot the main crawl. TagIDs is the parallel raw id list; PrimaryTag is Tags[0].",
+ "description": "Tags is the weighted community-tag taxonomy (Roguelike/Metroidvania/Cozy...),\nordered most-weighted first — the crowd tags appdetails genres omit.\nPopulated by a separate tag-enrichment pass, not the main crawl. TagIDs\nis the parallel raw id list; PrimaryTag is Tags[0].",
"items": {
"type": "string"
},
@@ -33847,6 +33847,13 @@
},
"type": "array"
},
+ "block_matched": {
+ "description": "block/challenge marker strings that matched, when FailureReason is a block/challenge classification",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
"categories": {
"description": "distinct, sorted; category facets",
"items": {
@@ -33875,6 +33882,10 @@
"ecommerce": {
"type": "string"
},
+ "failure_reason": {
+ "description": "failure diagnostics: populated whenever a probe attempt didn't fully\npass, even if the site still counts as reachable (e.g. a blocked page\nreturning a non-5xx status). Unset for a fully passing site.",
+ "type": "string"
+ },
"final_url": {
"description": "URL that produced the adopted body (after www. fallback / redirects)",
"type": "string"
@@ -33882,9 +33893,17 @@
"has_captcha": {
"type": "boolean"
},
+ "is_infrastructure": {
+ "description": "IsInfrastructure flags a backend CDN/DNS/cloud-vendor/registry hostname\n(e.g. cloudfront.net, gtld-servers.net) rather than a real,\nhuman-navigable website. Best-effort heuristic: a false negative\n(unflagged) is not proof a domain is a real site.",
+ "type": "boolean"
+ },
"method_version": {
"type": "string"
},
+ "probe_error": {
+ "description": "raw transport error's first line (e.g. \"context deadline exceeded\", \"no such host\"), when there was one",
+ "type": "string"
+ },
"probed_at": {
"description": "RFC3339 — when last probed",
"type": "string"
@@ -33937,7 +33956,7 @@
"type": "array"
},
"secondary_pages_discovered": {
- "description": "secondary-page telemetry (only populated when TECHSTACK_SECONDARY_PAGES\nis enabled and at least one secondary page was DISCOVERED on the\nhomepage nav for this domain — see workers/techstackscan1m's\ndiscoverSecondaryPages/fetchSecondaryPages). \"Discovered\" and\n\"fetched\" are deliberately distinct: a candidate can be found on the\nhomepage nav but still fail to fetch (403/timeout/block page) — that\nfailure is recorded in SecondaryPages (Fetched=false), not silently\ndropped.",
+ "description": "secondary-page telemetry: populated when the crawl looked for extra\nnon-homepage pages (opt-in per run) and discovered at least one on the\nhomepage nav for this domain. \"Discovered\" and \"fetched\" are\ndeliberately distinct: a candidate can be found on the homepage nav\nbut still fail to fetch (e.g. blocked or timed out) — that failure is\nrecorded in SecondaryPages (Fetched=false), not silently dropped.",
"type": "integer"
},
"secondary_pages_fetched": {
@@ -34306,7 +34325,7 @@
"es.VehicleListingRecord": {
"properties": {
"accident_count": {
- "description": "AccidentCount/OwnerCount come from a source's vehicle-history detail\n(CarMax's own /vehicle/{stock_number} History block as of 2026-08-20;\nreserved for other sources with an equivalent field). Pointers, not\nplain ints: 0 is a real, safety-relevant claim (\"confirmed zero\naccidents\") distinct from \"we haven't enriched this listing yet\" --\nsee services/carmax/dto.go's History doc comment for the same\nreasoning. Populated only for a bounded number of newly-discovered\nlistings per crawl pass (see workers/vehiclelistings's\ncarMaxEnrichPerPass), not backfilled for the whole catalog at once.",
+ "description": "AccidentCount/OwnerCount come from a source's vehicle-history detail\n(CarMax's own /vehicle/{stock_number} History block as of 2026-08-20;\nreserved for other sources with an equivalent field). Pointers, not\nplain ints: 0 is a real, safety-relevant claim (\"confirmed zero\naccidents\") distinct from \"we haven't enriched this listing yet\".\nPopulated only for a bounded number of newly-discovered listings per\ncrawl pass, not backfilled for the whole catalog at once.",
"type": "integer"
},
"body_style": {
@@ -57267,7 +57286,7 @@
"type": "integer"
},
"rating_histogram": {
- "description": "RatingHistogram is the count of ratings per star, ascending: index 0\nis 1-star, index 4 is 5-star. Matches\nservices/oldnavy.ProductReviewsResponse's own convention.",
+ "description": "RatingHistogram is the count of ratings per star, ascending: index 0\nis 1-star, index 4 is 5-star.",
"items": {
"type": "integer"
},
@@ -72082,7 +72101,7 @@
"type": "integer"
},
"ratings_only": {
- "description": "RatingsOnly marks a review that carries only a star rating with no\nwritten title/body -- Bazaarvoice allows these and this endpoint still\nsurfaces them, matching the same field already documented for Macy's\n(services/macys/reviews.go) and Kohl's Bazaarvoice integrations.",
+ "description": "RatingsOnly marks a review that carries only a star rating with no\nwritten title/body -- Bazaarvoice allows these and this endpoint still\nsurfaces them.",
"type": "boolean"
},
"recommended": {
@@ -76013,6 +76032,110 @@
},
"similarweb.SimilarWebResp": {
"properties": {
+ "AiTrafficDetails": {
+ "description": "AiTrafficDetails carries SimilarWeb's AI-chatbot traffic insights (the\nextension's \"AI Traffic\" feature set): which AI platforms send traffic\nto this domain, how that mix changed over recent months, and the top\nprompts users asked those chatbots that referred visits here. Left at\nits zero value when DataSource is \"public_page\" because that source\ndoesn't expose it.",
+ "properties": {
+ "ReferralTraffic": {
+ "type": "number"
+ },
+ "TopPrompts": {
+ "properties": {
+ "ErrorMessage": {
+ "type": "string"
+ },
+ "Prompts": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "Status": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "TotalVisits": {
+ "type": "number"
+ },
+ "Traffic": {
+ "properties": {
+ "Distribution": {
+ "properties": {
+ "Boundary": {
+ "type": "string"
+ },
+ "Chart": {
+ "items": {
+ "properties": {
+ "History": {
+ "items": {
+ "properties": {
+ "Date": {
+ "type": "string"
+ },
+ "Value": {
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "Icon": {
+ "type": "string"
+ },
+ "Name": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "Chatbots": {
+ "items": {
+ "properties": {
+ "Icon": {
+ "type": "string"
+ },
+ "Name": {
+ "type": "string"
+ },
+ "Value": {
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "Split": {
+ "items": {
+ "properties": {
+ "Icon": {
+ "type": "string"
+ },
+ "Name": {
+ "type": "string"
+ },
+ "Rank": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
"Category": {
"type": "string"
},
@@ -76067,6 +76190,11 @@
},
"type": "object"
},
+ "DataSource": {
+ "description": "DataSource reports which upstream this response was populated from.\n\"extension_api\" is the full-coverage source (SimilarWeb's undocumented\nbrowser-extension API); \"public_page\" is a narrower, credential-free\nfallback (see website.go) used only when the extension API is\nunreachable -- some fields above are left at their zero value when\nDataSource is \"public_page\" because this source doesn't expose them.\nSee docs/similarweb-web.md for the full field-availability breakdown.",
+ "example": "extension_api",
+ "type": "string"
+ },
"Description": {
"type": "string"
},
@@ -83562,43 +83690,6 @@
},
"type": "object"
},
- "techstack.Result": {
- "properties": {
- "categories": {
- "items": {
- "type": "string"
- },
- "type": "array"
- },
- "count": {
- "type": "integer"
- },
- "detector_version": {
- "type": "string"
- },
- "final_url": {
- "type": "string"
- },
- "technologies": {
- "items": {
- "$ref": "#/definitions/techstack.Technology"
- },
- "type": "array"
- },
- "unmatched_evidence": {
- "allOf": [
- {
- "$ref": "#/definitions/techstack.UnmatchedEvidence"
- }
- ],
- "description": "UnmatchedEvidence is the SAME script-src/link-href/generator evidence\nthe signature matcher already parses out of the page, filtered down to\nwhat did NOT match any current signature — the raw material for\n\"what vendor should we add a signature for next?\" (see\nworkers/techstackscan1m's run-wide frequency tally, which is the actual\ndurable artifact; this per-page field is not persisted per-site)."
- },
- "url": {
- "type": "string"
- }
- },
- "type": "object"
- },
"techstack.Technology": {
"properties": {
"categories": {
@@ -84046,6 +84137,9 @@
"example": "K8vZ9172Qo7",
"type": "string"
},
+ "has_artist_video": {
+ "type": "boolean"
+ },
"id": {
"example": "1688071",
"type": "string"
@@ -84057,6 +84151,15 @@
"example": "Ariana Grande",
"type": "string"
},
+ "setlist_source_url": {
+ "type": "string"
+ },
+ "setlists": {
+ "items": {
+ "$ref": "#/definitions/ticketmaster.Setlist"
+ },
+ "type": "array"
+ },
"synopsis": {
"type": "string"
},
@@ -84089,6 +84192,30 @@
},
"type": "object"
},
+ "ticketmaster.AttractionRelatedResponse": {
+ "properties": {
+ "attraction_id": {
+ "example": "1688071",
+ "type": "string"
+ },
+ "attractions": {
+ "items": {
+ "$ref": "#/definitions/ticketmaster.AttractionRef"
+ },
+ "type": "array"
+ },
+ "count": {
+ "type": "integer"
+ },
+ "fetched_at": {
+ "type": "string"
+ },
+ "source_url": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
"ticketmaster.AttractionResponse": {
"properties": {
"attraction": {
@@ -84103,6 +84230,54 @@
},
"type": "object"
},
+ "ticketmaster.AttractionReviewsResponse": {
+ "properties": {
+ "ai_review_summary": {
+ "type": "string"
+ },
+ "attraction_id": {
+ "example": "1688071",
+ "type": "string"
+ },
+ "average_rating": {
+ "example": 4.6,
+ "type": "number"
+ },
+ "best_rating": {
+ "example": 5,
+ "type": "number"
+ },
+ "fetched_at": {
+ "type": "string"
+ },
+ "limit": {
+ "example": 10,
+ "type": "integer"
+ },
+ "offset": {
+ "example": 0,
+ "type": "integer"
+ },
+ "reviews": {
+ "items": {
+ "$ref": "#/definitions/ticketmaster.Review"
+ },
+ "type": "array"
+ },
+ "source_url": {
+ "type": "string"
+ },
+ "time_zone": {
+ "example": "America/New_York",
+ "type": "string"
+ },
+ "total": {
+ "example": 2024,
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
"ticketmaster.Classification": {
"properties": {
"genre": {
@@ -84489,6 +84664,104 @@
},
"type": "object"
},
+ "ticketmaster.Review": {
+ "properties": {
+ "city": {
+ "example": "Chicago",
+ "type": "string"
+ },
+ "date_created": {
+ "example": "2026-08-14T16:14:29Z",
+ "type": "string"
+ },
+ "nick_name": {
+ "example": "Lynn",
+ "type": "string"
+ },
+ "rating": {
+ "example": 5,
+ "type": "integer"
+ },
+ "review": {
+ "type": "string"
+ },
+ "title": {
+ "example": "Best concert of my life",
+ "type": "string"
+ },
+ "venue": {
+ "example": "United Center",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ticketmaster.Setlist": {
+ "properties": {
+ "city_name": {
+ "example": "London",
+ "type": "string"
+ },
+ "country_name": {
+ "example": "United Kingdom",
+ "type": "string"
+ },
+ "event_date": {
+ "example": "2026-08-20",
+ "type": "string"
+ },
+ "sets": {
+ "items": {
+ "$ref": "#/definitions/ticketmaster.SetlistSet"
+ },
+ "type": "array"
+ },
+ "tour_name": {
+ "example": "Eternal Sunshine",
+ "type": "string"
+ },
+ "venue_name": {
+ "example": "The O2 Arena",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ticketmaster.SetlistSet": {
+ "properties": {
+ "name": {
+ "example": "Act I",
+ "type": "string"
+ },
+ "songs": {
+ "items": {
+ "$ref": "#/definitions/ticketmaster.SetlistSong"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "ticketmaster.SetlistSong": {
+ "properties": {
+ "name": {
+ "example": "thank u, next",
+ "type": "string"
+ },
+ "original_artist": {
+ "example": "Lady Gaga",
+ "type": "string"
+ },
+ "performance_notes": {
+ "example": "extended outro",
+ "type": "string"
+ },
+ "pre_recorded": {
+ "type": "boolean"
+ }
+ },
+ "type": "object"
+ },
"ticketmaster.Suggestion": {
"properties": {
"category": {
@@ -84535,6 +84808,88 @@
},
"type": "object"
},
+ "ticketmaster.TrendingAttraction": {
+ "properties": {
+ "discovery_id": {
+ "example": "K8vZ9172Qo7",
+ "type": "string"
+ },
+ "genre": {
+ "example": "Pop",
+ "type": "string"
+ },
+ "genre_id": {
+ "example": "KnvZfZ7vAev",
+ "type": "string"
+ },
+ "id": {
+ "example": "1688071",
+ "type": "string"
+ },
+ "image_url": {
+ "type": "string"
+ },
+ "images": {
+ "items": {
+ "$ref": "#/definitions/ticketmaster.TrendingAttractionImage"
+ },
+ "type": "array"
+ },
+ "name": {
+ "example": "Ariana Grande",
+ "type": "string"
+ },
+ "rank": {
+ "example": 1,
+ "type": "integer"
+ },
+ "segment": {
+ "example": "Music",
+ "type": "string"
+ },
+ "segment_id": {
+ "example": "KZFzniwnSyZfZ7v7nJ",
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ticketmaster.TrendingAttractionImage": {
+ "properties": {
+ "ratio": {
+ "example": "16_9",
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ticketmaster.TrendingAttractionsResponse": {
+ "properties": {
+ "attractions": {
+ "items": {
+ "$ref": "#/definitions/ticketmaster.TrendingAttraction"
+ },
+ "type": "array"
+ },
+ "count": {
+ "example": 10,
+ "type": "integer"
+ },
+ "fetched_at": {
+ "type": "string"
+ },
+ "source_url": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
"ticketmaster.Venue": {
"properties": {
"address": {
@@ -84545,6 +84900,12 @@
"example": "Chicago",
"type": "string"
},
+ "city_categories": {
+ "items": {
+ "$ref": "#/definitions/ticketmaster.VenueCityCategory"
+ },
+ "type": "array"
+ },
"country": {
"example": "US",
"type": "string"
@@ -84582,6 +84943,12 @@
"example": "60612",
"type": "string"
},
+ "seat_maps": {
+ "items": {
+ "$ref": "#/definitions/ticketmaster.VenueSeatMap"
+ },
+ "type": "array"
+ },
"state": {
"example": "IL",
"type": "string"
@@ -84596,6 +84963,46 @@
},
"type": "object"
},
+ "ticketmaster.VenueCityCategory": {
+ "properties": {
+ "id": {
+ "example": "KZFzniwnSyZfZ7v7nJ",
+ "type": "string"
+ },
+ "name": {
+ "example": "Concerts",
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ticketmaster.VenueEnhancedDetailsResponse": {
+ "properties": {
+ "fetched_at": {
+ "type": "string"
+ },
+ "header_image_url": {
+ "type": "string"
+ },
+ "related_links": {
+ "items": {
+ "$ref": "#/definitions/ticketmaster.VenueRelatedLink"
+ },
+ "type": "array"
+ },
+ "source_url": {
+ "type": "string"
+ },
+ "venue_id": {
+ "example": "32882",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
"ticketmaster.VenueInfoBlock": {
"properties": {
"name": {
@@ -84659,6 +85066,21 @@
},
"type": "object"
},
+ "ticketmaster.VenueRelatedLink": {
+ "properties": {
+ "image_url": {
+ "type": "string"
+ },
+ "title": {
+ "example": "Chicago Bulls",
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
"ticketmaster.VenueResponse": {
"properties": {
"fetched_at": {
@@ -84673,6 +85095,34 @@
},
"type": "object"
},
+ "ticketmaster.VenueSeatMap": {
+ "properties": {
+ "image_url": {
+ "type": "string"
+ },
+ "name": {
+ "example": "Chicago Bulls",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ticketmaster.attractionRelatedResponseDoc": {
+ "properties": {
+ "code": {
+ "example": 200,
+ "type": "integer"
+ },
+ "data": {
+ "$ref": "#/definitions/ticketmaster.AttractionRelatedResponse"
+ },
+ "msg": {
+ "example": "OK",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
"ticketmaster.attractionResponseDoc": {
"properties": {
"code": {
@@ -84689,6 +85139,22 @@
},
"type": "object"
},
+ "ticketmaster.attractionReviewsResponseDoc": {
+ "properties": {
+ "code": {
+ "example": 200,
+ "type": "integer"
+ },
+ "data": {
+ "$ref": "#/definitions/ticketmaster.AttractionReviewsResponse"
+ },
+ "msg": {
+ "example": "OK",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
"ticketmaster.categoriesResponseDoc": {
"properties": {
"code": {
@@ -84763,6 +85229,38 @@
},
"type": "object"
},
+ "ticketmaster.trendingAttractionsResponseDoc": {
+ "properties": {
+ "code": {
+ "example": 200,
+ "type": "integer"
+ },
+ "data": {
+ "$ref": "#/definitions/ticketmaster.TrendingAttractionsResponse"
+ },
+ "msg": {
+ "example": "OK",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ticketmaster.venueEnhancedDetailsResponseDoc": {
+ "properties": {
+ "code": {
+ "example": 200,
+ "type": "integer"
+ },
+ "data": {
+ "$ref": "#/definitions/ticketmaster.VenueEnhancedDetailsResponse"
+ },
+ "msg": {
+ "example": "OK",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
"ticketmaster.venueResponseDoc": {
"properties": {
"code": {
@@ -84779,6 +85277,441 @@
},
"type": "object"
},
+ "ticketweb.Attraction": {
+ "properties": {
+ "category": {
+ "example": "Arts & Theater",
+ "type": "string"
+ },
+ "genre": {
+ "example": "Comedy",
+ "type": "string"
+ },
+ "id": {
+ "type": "string"
+ },
+ "image_url": {
+ "type": "string"
+ },
+ "name": {
+ "example": "Comedy Beast",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ticketweb.DeliveryMethod": {
+ "properties": {
+ "description": {
+ "type": "string"
+ },
+ "fee": {
+ "example": "Free",
+ "type": "string"
+ },
+ "name": {
+ "example": "eTickets",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ticketweb.EventDetail": {
+ "properties": {
+ "age_restriction": {
+ "example": 18,
+ "type": "integer"
+ },
+ "age_restriction_message": {
+ "example": "Ages 18+",
+ "type": "string"
+ },
+ "announce_time": {
+ "type": "string"
+ },
+ "attractions": {
+ "items": {
+ "$ref": "#/definitions/ticketweb.Attraction"
+ },
+ "type": "array"
+ },
+ "currency": {
+ "example": "USD",
+ "type": "string"
+ },
+ "delivery_methods": {
+ "items": {
+ "$ref": "#/definitions/ticketweb.DeliveryMethod"
+ },
+ "type": "array"
+ },
+ "description": {
+ "type": "string"
+ },
+ "end_time": {
+ "type": "string"
+ },
+ "has_tickets": {
+ "example": true,
+ "type": "boolean"
+ },
+ "id": {
+ "example": "14241184",
+ "type": "string"
+ },
+ "image_url": {
+ "type": "string"
+ },
+ "name": {
+ "example": "Comedy Beast",
+ "type": "string"
+ },
+ "on_sale_time": {
+ "example": "2026-07-01T12:05:00.000-05:00",
+ "type": "string"
+ },
+ "price_range": {
+ "$ref": "#/definitions/ticketweb.PriceRange"
+ },
+ "sections": {
+ "items": {
+ "$ref": "#/definitions/ticketweb.TicketSection"
+ },
+ "type": "array"
+ },
+ "start_time": {
+ "example": "2026-08-25T19:30:00.000-05:00",
+ "type": "string"
+ },
+ "terms_and_conditions": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ },
+ "venue": {
+ "$ref": "#/definitions/ticketweb.EventVenue"
+ }
+ },
+ "type": "object"
+ },
+ "ticketweb.EventResponse": {
+ "properties": {
+ "event": {
+ "$ref": "#/definitions/ticketweb.EventDetail"
+ },
+ "fetched_at": {
+ "type": "string"
+ },
+ "source_url": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ticketweb.EventSummary": {
+ "properties": {
+ "availability": {
+ "enum": [
+ "in_stock",
+ "sold_out",
+ "unknown"
+ ],
+ "example": "in_stock",
+ "type": "string"
+ },
+ "id": {
+ "example": "14241184",
+ "type": "string"
+ },
+ "image_url": {
+ "type": "string"
+ },
+ "name": {
+ "example": "Comedy Beast",
+ "type": "string"
+ },
+ "start_time": {
+ "example": "2026-08-25T19:30",
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ },
+ "venue": {
+ "$ref": "#/definitions/ticketweb.VenueRef"
+ }
+ },
+ "type": "object"
+ },
+ "ticketweb.EventVenue": {
+ "properties": {
+ "address": {
+ "example": "907 South Peters",
+ "type": "string"
+ },
+ "city": {
+ "example": "New Orleans",
+ "type": "string"
+ },
+ "country": {
+ "example": "US",
+ "type": "string"
+ },
+ "id": {
+ "example": "15005",
+ "type": "string"
+ },
+ "map_image": {
+ "type": "string"
+ },
+ "name": {
+ "example": "Howlin' Wolf",
+ "type": "string"
+ },
+ "postal_code": {
+ "example": "70130",
+ "type": "string"
+ },
+ "state": {
+ "example": "LA",
+ "type": "string"
+ },
+ "time_zone": {
+ "example": "US/Central",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ticketweb.PriceRange": {
+ "properties": {
+ "max": {
+ "example": 8.16,
+ "type": "number"
+ },
+ "min": {
+ "example": 8.16,
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "ticketweb.SearchResponse": {
+ "properties": {
+ "count": {
+ "example": 20,
+ "type": "integer"
+ },
+ "events": {
+ "items": {
+ "$ref": "#/definitions/ticketweb.EventSummary"
+ },
+ "type": "array"
+ },
+ "fetched_at": {
+ "type": "string"
+ },
+ "page": {
+ "example": 1,
+ "type": "integer"
+ },
+ "query": {
+ "type": "string"
+ },
+ "source_url": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ticketweb.TicketFees": {
+ "properties": {
+ "credit_card": {
+ "example": 0.16,
+ "type": "number"
+ },
+ "facility": {
+ "type": "number"
+ },
+ "per_ticket": {
+ "example": 1.5,
+ "type": "number"
+ },
+ "rebate": {
+ "example": 1.5,
+ "type": "number"
+ },
+ "taxes": {
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "ticketweb.TicketPrice": {
+ "properties": {
+ "base": {
+ "example": 5,
+ "type": "number"
+ },
+ "fees": {
+ "$ref": "#/definitions/ticketweb.TicketFees"
+ },
+ "max_purchase_limit": {
+ "example": 10,
+ "type": "integer"
+ },
+ "min_purchase_limit": {
+ "type": "integer"
+ },
+ "name": {
+ "example": "GA Seating",
+ "type": "string"
+ },
+ "sold_out": {
+ "type": "boolean"
+ },
+ "total": {
+ "example": 8.16,
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "ticketweb.TicketSection": {
+ "properties": {
+ "name": {
+ "example": "GA Seating",
+ "type": "string"
+ },
+ "prices": {
+ "items": {
+ "$ref": "#/definitions/ticketweb.TicketPrice"
+ },
+ "type": "array"
+ },
+ "purchase_limit": {
+ "example": 10,
+ "type": "integer"
+ },
+ "sold_out": {
+ "type": "boolean"
+ }
+ },
+ "type": "object"
+ },
+ "ticketweb.VenueDetail": {
+ "properties": {
+ "address": {
+ "example": "907 South Peters, New Orleans, LA 70130",
+ "type": "string"
+ },
+ "id": {
+ "example": "15005",
+ "type": "string"
+ },
+ "name": {
+ "example": "Howlin' Wolf",
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ticketweb.VenueRef": {
+ "properties": {
+ "address": {
+ "example": "New Orleans, LA",
+ "type": "string"
+ },
+ "name": {
+ "example": "Howlin' Wolf",
+ "type": "string"
+ },
+ "url": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ticketweb.VenueResponse": {
+ "properties": {
+ "count": {
+ "example": 20,
+ "type": "integer"
+ },
+ "events": {
+ "items": {
+ "$ref": "#/definitions/ticketweb.EventSummary"
+ },
+ "type": "array"
+ },
+ "fetched_at": {
+ "type": "string"
+ },
+ "page": {
+ "example": 1,
+ "type": "integer"
+ },
+ "source_url": {
+ "type": "string"
+ },
+ "venue": {
+ "$ref": "#/definitions/ticketweb.VenueDetail"
+ }
+ },
+ "type": "object"
+ },
+ "ticketweb.eventResponseDoc": {
+ "properties": {
+ "code": {
+ "example": 200,
+ "type": "integer"
+ },
+ "data": {
+ "$ref": "#/definitions/ticketweb.EventResponse"
+ },
+ "msg": {
+ "example": "OK",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ticketweb.searchResponseDoc": {
+ "properties": {
+ "code": {
+ "example": 200,
+ "type": "integer"
+ },
+ "data": {
+ "$ref": "#/definitions/ticketweb.SearchResponse"
+ },
+ "msg": {
+ "example": "OK",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ticketweb.venueResponseDoc": {
+ "properties": {
+ "code": {
+ "example": 200,
+ "type": "integer"
+ },
+ "data": {
+ "$ref": "#/definitions/ticketweb.VenueResponse"
+ },
+ "msg": {
+ "example": "OK",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
"tiktok.Category": {
"properties": {
"name": {
@@ -95053,6 +95986,53 @@
],
"type": "object"
},
+ "web.TechStackResult": {
+ "properties": {
+ "categories": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "count": {
+ "type": "integer"
+ },
+ "detector_version": {
+ "type": "string"
+ },
+ "failure_reason": {
+ "type": "string"
+ },
+ "final_url": {
+ "type": "string"
+ },
+ "is_infrastructure": {
+ "description": "IsInfrastructure is true when the URL's host looks like backend\ninfrastructure (a CDN, DNS, or cloud-vendor hostname) rather than a\nreal, human-navigable website.",
+ "type": "boolean"
+ },
+ "reachable": {
+ "type": "boolean"
+ },
+ "technologies": {
+ "items": {
+ "$ref": "#/definitions/techstack.Technology"
+ },
+ "type": "array"
+ },
+ "unmatched_evidence": {
+ "allOf": [
+ {
+ "$ref": "#/definitions/techstack.UnmatchedEvidence"
+ }
+ ],
+ "description": "UnmatchedEvidence is the third-party script/stylesheet host domains and\n value seen on the page that don't match any current\nsignature — useful for spotting a vendor worth requesting coverage for."
+ },
+ "url": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
"web.billingRejectionDoc": {
"properties": {
"credit_cost": {
@@ -95189,7 +96169,7 @@
"type": "integer"
},
"data": {
- "$ref": "#/definitions/techstack.Result"
+ "$ref": "#/definitions/web.TechStackResult"
},
"msg": {
"example": "OK",
@@ -137783,6 +138763,12 @@
"name": "has_captcha",
"type": "boolean"
},
+ {
+ "description": "false (the common case) excludes backend CDN/DNS/cloud-vendor hostnames that rank highly but were never meant to serve a public homepage, keeping only real, human-navigable sites; true keeps only those backend hostnames",
+ "in": "query",
+ "name": "is_infrastructure",
+ "type": "boolean"
+ },
{
"description": "true keeps only sites whose homepage was fetched",
"in": "query",
@@ -137847,7 +138833,7 @@
"consumes": [
"application/json"
],
- "description": "Returns one site by its domain from dataset id enum value `techstack`, including every detected technology (name, categories, confidence, version, evidence) plus the CMS / e-commerce / CDN / web-server / server-language rollups. Returns 404 when the domain is not in the index.",
+ "description": "Returns one site by its domain from dataset id enum value `techstack`, including every detected technology (name, categories, confidence, version, evidence) plus the CMS / e-commerce / CDN / web-server / server-language rollups. Also flags whether the domain looks like backend CDN/DNS/cloud-vendor infrastructure rather than a real, human-navigable site (see `is_infrastructure`). Returns 404 when the domain is not in the index.",
"operationId": "datasets-techstack-item",
"parameters": [
{
@@ -138012,6 +138998,12 @@
"name": "has_captcha",
"type": "boolean"
},
+ {
+ "description": "false (the common case) excludes backend CDN/DNS/cloud-vendor hostnames that rank highly but were never meant to serve a public homepage, keeping only real, human-navigable sites; true keeps only those backend hostnames",
+ "in": "query",
+ "name": "is_infrastructure",
+ "type": "boolean"
+ },
{
"description": "true keeps only sites whose homepage was fetched, false only sites that could not be fetched",
"in": "query",
@@ -169173,7 +170165,7 @@
"consumes": [
"application/json"
],
- "description": "Returns lululemon's own complete physical store directory (480 US and 86 Canada locations as of this endpoint's own research), including regular weekly hours and in-store amenities. All filters are optional and applied locally after fetching the full directory -- there is no live geo-search API on a credential-free host for this platform (see notes/lululemon-maintenance.md). country and state are free-text equality filters against the values this directory actually carries (2-letter codes, e.g. US/CA, NY/CA), not an enforced enum. lat and lng (both required together) filter to stores within radius_miles (1 to 500, defaults to 50), sorted nearest-first.",
+ "description": "Returns lululemon's own complete physical store directory (480 US and 86 Canada locations as of this endpoint's own research), including regular weekly hours and in-store amenities. All filters are optional and applied locally after fetching the full directory -- there is no live geo-search API on a credential-free host for this platform. country and state are free-text equality filters against the values this directory actually carries (2-letter codes, e.g. US/CA, NY/CA), not an enforced enum. lat and lng (both required together) filter to stores within radius_miles (1 to 500, defaults to 50), sorted nearest-first.",
"operationId": "lululemon-stores",
"parameters": [
{
@@ -172679,7 +173671,7 @@
"consumes": [
"application/json"
],
- "description": "Creates a monitor that periodically checks a page or sitemap for changes and can notify a webhook. Free to call -- only completed check runs (services/webmonitor's cron-driven scrape/sitemap fetch) consume credits, at 1 credit per completed run regardless of target type or whether a change was detected. `target_type` defaults to \"page\" (exact-fingerprint diff of the scraped page). \"sitemap\" watches the sitemap at `url` for added/removed entries instead, honoring `sitemap.include_patterns`/`exclude_patterns` (shell-style globs matched against each URL's path) and `sitemap.max_urls` (default 5000, hard cap 10000).",
+ "description": "Creates a monitor that periodically checks a page or sitemap for changes and can notify a webhook. Free to call -- only completed check runs consume credits, at 1 credit per completed run regardless of target type or whether a change was detected. `target_type` defaults to \"page\" (exact-fingerprint diff of the scraped page). \"sitemap\" watches the sitemap at `url` for added/removed entries instead, honoring `sitemap.include_patterns`/`exclude_patterns` (shell-style globs matched against each URL's path) and `sitemap.max_urls` (default 5000, hard cap 10000).",
"operationId": "monitors-create",
"parameters": [
{
@@ -201210,47 +202202,514 @@
"ApiKeyAuth": []
}
],
- "summary": "List an attraction's Ticketmaster events",
+ "summary": "List an attraction's Ticketmaster events",
+ "tags": [
+ "Ticketmaster"
+ ]
+ }
+ },
+ "/ticketmaster/attraction-related": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns the \"Fans Also Viewed\" attractions shown on one attraction's own page. An attraction with no recommendation data returns a valid empty list.",
+ "operationId": "ticketmaster-attraction-related",
+ "parameters": [
+ {
+ "description": "Numeric Ticketmaster attraction id",
+ "in": "query",
+ "name": "id",
+ "required": true,
+ "type": "string",
+ "x-example": "1688071"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/ticketmaster.attractionRelatedResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "List a Ticketmaster attraction's related attractions",
+ "tags": [
+ "Ticketmaster"
+ ]
+ }
+ },
+ "/ticketmaster/attraction-reviews": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns paginated fan reviews for one attraction, including its aggregate rating and Ticketmaster's own AI-generated review summary.",
+ "operationId": "ticketmaster-attraction-reviews",
+ "parameters": [
+ {
+ "description": "Numeric Ticketmaster attraction id",
+ "in": "query",
+ "name": "id",
+ "required": true,
+ "type": "string",
+ "x-example": "1688071"
+ },
+ {
+ "default": 0,
+ "description": "Result offset (0-9995)",
+ "in": "query",
+ "maximum": 9995,
+ "minimum": 0,
+ "name": "offset",
+ "type": "integer"
+ },
+ {
+ "default": 10,
+ "description": "Reviews per page (10-50)",
+ "in": "query",
+ "maximum": 50,
+ "minimum": 10,
+ "name": "limit",
+ "type": "integer"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/ticketmaster.attractionReviewsResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "List a Ticketmaster attraction's fan reviews",
+ "tags": [
+ "Ticketmaster"
+ ]
+ }
+ },
+ "/ticketmaster/discover-categories": {
+ "get": {
+ "description": "Lists every current Concerts, Sports, Arts & Theater, and Family category with pagination. Section accepts `all`, `concerts`, `sports`, `arts-theater`, and `family`.",
+ "operationId": "ticketmaster-discover-categories",
+ "parameters": [
+ {
+ "default": "all",
+ "description": "Discover section",
+ "enum": [
+ "all",
+ "concerts",
+ "sports",
+ "arts-theater",
+ "family"
+ ],
+ "in": "query",
+ "name": "section",
+ "type": "string"
+ },
+ {
+ "default": 1,
+ "description": "One-based page",
+ "in": "query",
+ "minimum": 1,
+ "name": "page",
+ "type": "integer"
+ },
+ {
+ "default": 50,
+ "description": "Categories per page",
+ "in": "query",
+ "maximum": 100,
+ "minimum": 1,
+ "name": "per_page",
+ "type": "integer"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/ticketmaster.categoriesResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "List Ticketmaster discover categories",
+ "tags": [
+ "Ticketmaster"
+ ]
+ }
+ },
+ "/ticketmaster/discover-category-events": {
+ "get": {
+ "description": "Returns a zero-based paginated event feed for any category returned by ticketmaster-discover-categories.",
+ "operationId": "ticketmaster-discover-category-events",
+ "parameters": [
+ {
+ "description": "Ticketmaster discover category id",
+ "in": "query",
+ "name": "category_id",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "default": 0,
+ "description": "Zero-based page",
+ "in": "query",
+ "maximum": 49,
+ "minimum": 0,
+ "name": "page",
+ "type": "integer"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/ticketmaster.eventsResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "List events in a Ticketmaster discover category",
+ "tags": [
+ "Ticketmaster"
+ ]
+ }
+ },
+ "/ticketmaster/discover-cities": {
+ "get": {
+ "description": "Lists Ticketmaster city discovery destinations for a country with pagination.",
+ "operationId": "ticketmaster-discover-cities",
+ "parameters": [
+ {
+ "default": "US",
+ "description": "Two-letter country code",
+ "in": "query",
+ "name": "country",
+ "type": "string"
+ },
+ {
+ "default": 1,
+ "description": "One-based page",
+ "in": "query",
+ "minimum": 1,
+ "name": "page",
+ "type": "integer"
+ },
+ {
+ "default": 50,
+ "description": "Cities per page",
+ "in": "query",
+ "maximum": 100,
+ "minimum": 1,
+ "name": "per_page",
+ "type": "integer"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/ticketmaster.citiesResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "List Ticketmaster discover cities",
+ "tags": [
+ "Ticketmaster"
+ ]
+ }
+ },
+ "/ticketmaster/discover-city-events": {
+ "get": {
+ "description": "Returns a zero-based paginated event feed for a city slug returned by ticketmaster-discover-cities.",
+ "operationId": "ticketmaster-discover-city-events",
+ "parameters": [
+ {
+ "description": "Ticketmaster discover city slug",
+ "in": "query",
+ "name": "city",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "default": "US",
+ "description": "Two-letter country code matching the selected city",
+ "in": "query",
+ "name": "country",
+ "type": "string"
+ },
+ {
+ "default": 0,
+ "description": "Zero-based page",
+ "in": "query",
+ "maximum": 49,
+ "minimum": 0,
+ "name": "page",
+ "type": "integer"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/ticketmaster.eventsResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "List events in a Ticketmaster discover city",
+ "tags": [
+ "Ticketmaster"
+ ]
+ }
+ },
+ "/ticketmaster/event": {
+ "get": {
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns normalized details for one Ticketmaster event, including its venue, attractions, timing, availability flags, and classification.",
+ "operationId": "ticketmaster-event",
+ "parameters": [
+ {
+ "description": "Ticketmaster event id",
+ "in": "query",
+ "name": "id",
+ "required": true,
+ "type": "string",
+ "x-example": "04006319DDEA2CD5"
+ }
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "schema": {
+ "$ref": "#/definitions/ticketmaster.eventResponseDoc"
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ }
+ },
+ "security": [
+ {
+ "ApiKeyAuth": []
+ }
+ ],
+ "summary": "Get a Ticketmaster event",
"tags": [
"Ticketmaster"
]
}
},
- "/ticketmaster/discover-categories": {
+ "/ticketmaster/search-events": {
"get": {
- "description": "Lists every current Concerts, Sports, Arts & Theater, and Family category with pagination. Section accepts `all`, `concerts`, `sports`, `arts-theater`, and `family`.",
- "operationId": "ticketmaster-discover-categories",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Searches Ticketmaster events by artist, event, team, or venue. A zero total with an empty events list is a valid no-results response. The sort enum accepts `relevance` and `date`.",
+ "operationId": "ticketmaster-search-events",
"parameters": [
{
- "default": "all",
- "description": "Discover section",
- "enum": [
- "all",
- "concerts",
- "sports",
- "arts-theater",
- "family"
- ],
+ "description": "Artist, event, team, or venue query",
"in": "query",
- "name": "section",
- "type": "string"
+ "name": "q",
+ "required": true,
+ "type": "string",
+ "x-example": "ariana grande"
},
{
- "default": 1,
- "description": "One-based page",
+ "default": 0,
+ "description": "Zero-based page (0-49)",
"in": "query",
- "minimum": 1,
+ "maximum": 49,
+ "minimum": 0,
"name": "page",
"type": "integer"
},
{
- "default": 50,
- "description": "Categories per page",
+ "default": "relevance",
+ "description": "Result order",
+ "enum": [
+ "relevance",
+ "date"
+ ],
"in": "query",
- "maximum": 100,
- "minimum": 1,
- "name": "per_page",
- "type": "integer"
+ "name": "sort",
+ "type": "string"
}
],
"produces": [
@@ -201260,7 +202719,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/ticketmaster.categoriesResponseDoc"
+ "$ref": "#/definitions/ticketmaster.eventsResponseDoc"
}
},
"400": {
@@ -201269,6 +202728,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -201281,32 +202746,23 @@
"ApiKeyAuth": []
}
],
- "summary": "List Ticketmaster discover categories",
+ "summary": "Search Ticketmaster events",
"tags": [
"Ticketmaster"
]
}
},
- "/ticketmaster/discover-category-events": {
+ "/ticketmaster/suggest": {
"get": {
- "description": "Returns a zero-based paginated event feed for any category returned by ticketmaster-discover-categories.",
- "operationId": "ticketmaster-discover-category-events",
+ "description": "Returns autocomplete suggestions for a partial query.",
+ "operationId": "ticketmaster-suggest",
"parameters": [
{
- "description": "Ticketmaster discover category id",
+ "description": "Partial artist, event, team, or venue query",
"in": "query",
- "name": "category_id",
+ "name": "q",
"required": true,
"type": "string"
- },
- {
- "default": 0,
- "description": "Zero-based page",
- "in": "query",
- "maximum": 49,
- "minimum": 0,
- "name": "page",
- "type": "integer"
}
],
"produces": [
@@ -201316,7 +202772,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/ticketmaster.eventsResponseDoc"
+ "$ref": "#/definitions/ticketmaster.suggestionsResponseDoc"
}
},
"400": {
@@ -201337,42 +202793,19 @@
"ApiKeyAuth": []
}
],
- "summary": "List events in a Ticketmaster discover category",
+ "summary": "Suggest Ticketmaster artists, events, and venues",
"tags": [
"Ticketmaster"
]
}
},
- "/ticketmaster/discover-cities": {
+ "/ticketmaster/trending-attractions": {
"get": {
- "description": "Lists Ticketmaster city discovery destinations for a country with pagination.",
- "operationId": "ticketmaster-discover-cities",
- "parameters": [
- {
- "default": "US",
- "description": "Two-letter country code",
- "in": "query",
- "name": "country",
- "type": "string"
- },
- {
- "default": 1,
- "description": "One-based page",
- "in": "query",
- "minimum": 1,
- "name": "page",
- "type": "integer"
- },
- {
- "default": 50,
- "description": "Cities per page",
- "in": "query",
- "maximum": 100,
- "minimum": 1,
- "name": "per_page",
- "type": "integer"
- }
+ "consumes": [
+ "application/json"
],
+ "description": "Returns a ranked list of currently-trending attractions across every segment (music, sports, arts and theater, family), not scoped to one category or city.",
+ "operationId": "ticketmaster-trending-attractions",
"produces": [
"application/json"
],
@@ -201380,11 +202813,11 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/ticketmaster.citiesResponseDoc"
+ "$ref": "#/definitions/ticketmaster.trendingAttractionsResponseDoc"
}
},
- "400": {
- "description": "Bad Request",
+ "429": {
+ "description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -201401,39 +202834,27 @@
"ApiKeyAuth": []
}
],
- "summary": "List Ticketmaster discover cities",
+ "summary": "List trending Ticketmaster attractions",
"tags": [
"Ticketmaster"
]
}
},
- "/ticketmaster/discover-city-events": {
+ "/ticketmaster/venue": {
"get": {
- "description": "Returns a zero-based paginated event feed for a city slug returned by ticketmaster-discover-cities.",
- "operationId": "ticketmaster-discover-city-events",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns normalized details and visitor information for one Ticketmaster venue.",
+ "operationId": "ticketmaster-venue",
"parameters": [
{
- "description": "Ticketmaster discover city slug",
+ "description": "Numeric Ticketmaster venue id",
"in": "query",
- "name": "city",
+ "name": "id",
"required": true,
- "type": "string"
- },
- {
- "default": "US",
- "description": "Two-letter country code matching the selected city",
- "in": "query",
- "name": "country",
- "type": "string"
- },
- {
- "default": 0,
- "description": "Zero-based page",
- "in": "query",
- "maximum": 49,
- "minimum": 0,
- "name": "page",
- "type": "integer"
+ "type": "string",
+ "x-example": "32882"
}
],
"produces": [
@@ -201443,7 +202864,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/ticketmaster.eventsResponseDoc"
+ "$ref": "#/definitions/ticketmaster.venueResponseDoc"
}
},
"400": {
@@ -201458,6 +202879,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "429": {
+ "description": "Too Many Requests",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -201470,27 +202897,27 @@
"ApiKeyAuth": []
}
],
- "summary": "List events in a Ticketmaster discover city",
+ "summary": "Get a Ticketmaster venue",
"tags": [
"Ticketmaster"
]
}
},
- "/ticketmaster/event": {
+ "/ticketmaster/venue-enhanced-details": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized details for one Ticketmaster event, including its venue, attractions, timing, availability flags, and classification.",
- "operationId": "ticketmaster-event",
+ "description": "Returns header branding imagery and external links (the venue's own site, resident teams) for major venues. Smaller venues without enhanced content return 404.",
+ "operationId": "ticketmaster-venue-enhanced-details",
"parameters": [
{
- "description": "Ticketmaster event id",
+ "description": "Numeric Ticketmaster venue id",
"in": "query",
"name": "id",
"required": true,
"type": "string",
- "x-example": "04006319DDEA2CD5"
+ "x-example": "32882"
}
],
"produces": [
@@ -201500,7 +202927,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/ticketmaster.eventResponseDoc"
+ "$ref": "#/definitions/ticketmaster.venueEnhancedDetailsResponseDoc"
}
},
"400": {
@@ -201533,27 +202960,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Ticketmaster event",
+ "summary": "Get a Ticketmaster venue's enhanced branding details",
"tags": [
"Ticketmaster"
]
}
},
- "/ticketmaster/search-events": {
+ "/ticketmaster/venue-events": {
"get": {
"consumes": [
"application/json"
],
- "description": "Searches Ticketmaster events by artist, event, team, or venue. A zero total with an empty events list is a valid no-results response. The sort enum accepts `relevance` and `date`.",
- "operationId": "ticketmaster-search-events",
+ "description": "Returns upcoming Ticketmaster events at one venue. The sort enum accepts `relevance` and `date`.",
+ "operationId": "ticketmaster-venue-events",
"parameters": [
{
- "description": "Artist, event, team, or venue query",
+ "description": "Numeric Ticketmaster venue id",
"in": "query",
- "name": "q",
+ "name": "id",
"required": true,
"type": "string",
- "x-example": "ariana grande"
+ "x-example": "32882"
},
{
"default": 0,
@@ -201565,7 +202992,7 @@
"type": "integer"
},
{
- "default": "relevance",
+ "default": "date",
"description": "Result order",
"enum": [
"relevance",
@@ -201610,23 +203037,27 @@
"ApiKeyAuth": []
}
],
- "summary": "Search Ticketmaster events",
+ "summary": "List a venue's Ticketmaster events",
"tags": [
"Ticketmaster"
]
}
},
- "/ticketmaster/suggest": {
+ "/ticketweb/event": {
"get": {
- "description": "Returns autocomplete suggestions for a partial query.",
- "operationId": "ticketmaster-suggest",
+ "consumes": [
+ "application/json"
+ ],
+ "description": "Returns normalized details for one TicketWeb event: venue, dates, age restriction, delivery methods, and per-tier ticket pricing (base price, fee breakdown, and total) when tickets are on sale. `has_tickets` is false and `sections` is empty for a free/RSVP event with no paid tickets, a sold-out event, or an access-code-gated event -- TicketWeb's own data does not reliably distinguish these three cases at this level, so the response reports the shared observable state (no purchasable sections) rather than guessing which applies.",
+ "operationId": "ticketweb-event",
"parameters": [
{
- "description": "Partial artist, event, team, or venue query",
+ "description": "Numeric TicketWeb event id",
"in": "query",
- "name": "q",
+ "name": "id",
"required": true,
- "type": "string"
+ "type": "string",
+ "x-example": "14241184"
}
],
"produces": [
@@ -201636,7 +203067,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/ticketmaster.suggestionsResponseDoc"
+ "$ref": "#/definitions/ticketweb.eventResponseDoc"
}
},
"400": {
@@ -201645,6 +203076,12 @@
"$ref": "#/definitions/app.Response"
}
},
+ "404": {
+ "description": "Not Found",
+ "schema": {
+ "$ref": "#/definitions/app.Response"
+ }
+ },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -201657,27 +203094,36 @@
"ApiKeyAuth": []
}
],
- "summary": "Suggest Ticketmaster artists, events, and venues",
+ "summary": "Get a TicketWeb event",
"tags": [
- "Ticketmaster"
+ "TicketWeb"
]
}
},
- "/ticketmaster/venue": {
+ "/ticketweb/search": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns normalized details and visitor information for one Ticketmaster venue.",
- "operationId": "ticketmaster-venue",
+ "description": "Searches TicketWeb events by artist, event, or venue. A zero count with an empty events list is a valid no-results response. availability is one of `in_stock`, `sold_out`, `unknown` per event.",
+ "operationId": "ticketweb-search",
"parameters": [
{
- "description": "Numeric Ticketmaster venue id",
+ "description": "Artist, event, or venue query",
"in": "query",
- "name": "id",
+ "name": "q",
"required": true,
"type": "string",
- "x-example": "32882"
+ "x-example": "comedy"
+ },
+ {
+ "default": 1,
+ "description": "One-based result page, 1-50",
+ "in": "query",
+ "maximum": 50,
+ "minimum": 1,
+ "name": "page",
+ "type": "integer"
}
],
"produces": [
@@ -201687,7 +203133,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/ticketmaster.venueResponseDoc"
+ "$ref": "#/definitions/ticketweb.searchResponseDoc"
}
},
"400": {
@@ -201696,18 +203142,6 @@
"$ref": "#/definitions/app.Response"
}
},
- "404": {
- "description": "Not Found",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
- "429": {
- "description": "Too Many Requests",
- "schema": {
- "$ref": "#/definitions/app.Response"
- }
- },
"503": {
"description": "Service Unavailable",
"schema": {
@@ -201720,47 +203154,36 @@
"ApiKeyAuth": []
}
],
- "summary": "Get a Ticketmaster venue",
+ "summary": "Search TicketWeb events",
"tags": [
- "Ticketmaster"
+ "TicketWeb"
]
}
},
- "/ticketmaster/venue-events": {
+ "/ticketweb/venue": {
"get": {
"consumes": [
"application/json"
],
- "description": "Returns upcoming Ticketmaster events at one venue. The sort enum accepts `relevance` and `date`.",
- "operationId": "ticketmaster-venue-events",
+ "description": "Returns one TicketWeb venue's detail (name, address) plus one page of its upcoming events. A zero count with an empty events list on page 1 is a valid \"no upcoming events\" response.",
+ "operationId": "ticketweb-venue",
"parameters": [
{
- "description": "Numeric Ticketmaster venue id",
+ "description": "Numeric TicketWeb venue id",
"in": "query",
"name": "id",
"required": true,
"type": "string",
- "x-example": "32882"
+ "x-example": "15005"
},
{
- "default": 0,
- "description": "Zero-based page (0-49)",
+ "default": 1,
+ "description": "One-based page of upcoming events, 1-50",
"in": "query",
- "maximum": 49,
- "minimum": 0,
+ "maximum": 50,
+ "minimum": 1,
"name": "page",
"type": "integer"
- },
- {
- "default": "date",
- "description": "Result order",
- "enum": [
- "relevance",
- "date"
- ],
- "in": "query",
- "name": "sort",
- "type": "string"
}
],
"produces": [
@@ -201770,7 +203193,7 @@
"200": {
"description": "OK",
"schema": {
- "$ref": "#/definitions/ticketmaster.eventsResponseDoc"
+ "$ref": "#/definitions/ticketweb.venueResponseDoc"
}
},
"400": {
@@ -201779,8 +203202,8 @@
"$ref": "#/definitions/app.Response"
}
},
- "429": {
- "description": "Too Many Requests",
+ "404": {
+ "description": "Not Found",
"schema": {
"$ref": "#/definitions/app.Response"
}
@@ -201797,9 +203220,9 @@
"ApiKeyAuth": []
}
],
- "summary": "List a venue's Ticketmaster events",
+ "summary": "Get a TicketWeb venue",
"tags": [
- "Ticketmaster"
+ "TicketWeb"
]
}
},
@@ -209420,7 +210843,7 @@
"consumes": [
"application/json"
],
- "description": "Returns a Wayfair category page's product grid, with real page-based pagination. category accepts a bare Wayfair category id (\"478390\"), a \"c\"-prefixed id (\"c478390\"), a category slug (\"office-chairs-c478390\"), or a full category URL copied from wayfair.com -- only the trailing category id is used. Returns normalized products with name, brand, pricing, and image.",
+ "description": "Returns a Wayfair category page's product grid, with real page-based pagination. category accepts a bare Wayfair category id (\"478390\"), a \"c\"-prefixed id (\"c478390\"), a category slug (\"office-chairs-c478390\"), or a full category URL copied from wayfair.com. The trailing category id is resolved to Wayfair's current canonical URL through its published sitemap. Returns normalized products with name, brand, pricing, and image.",
"operationId": "wayfair-category",
"parameters": [
{
@@ -209623,7 +211046,7 @@
"consumes": [
"application/json"
],
- "description": "Fetches a public URL and fingerprints the web technologies it is built with — a BuiltWith / Wappalyzer-style detector. Returns a list of detected `technologies`, each with its `categories`, a `confidence` (`high`, `medium`, `low`), an optional `version`, and the `evidence` that matched. Covers JavaScript frameworks and libraries (React, Vue.js, Angular, Svelte, jQuery), web frameworks / static site generators (Next.js, Nuxt.js, Gatsby, Remix, SvelteKit, Astro, Hugo), CMS and website builders (WordPress, Drupal, Joomla, Ghost, Wix, Squarespace, Webflow), e-commerce (Shopify, WooCommerce, Magento, BigCommerce), analytics, ad pixels, and tag managers (Google Analytics, Google Tag Manager, Meta Pixel, LinkedIn, Bing, TikTok/Pinterest/Reddit pixels, Segment, Hotjar, Microsoft Clarity), CDNs, UI frameworks and fonts, payments (Stripe, PayPal, Klarna), live chat, marketing automation, A/B testing, consent management, CAPTCHAs (reCAPTCHA, hCaptcha, Turnstile), video, and search. It also inspects response headers (from a plain HTTP fetch) to identify the web server (nginx, Apache, IIS), the CDN / hosting provider (Cloudflare, CloudFront, Fastly, Vercel, Netlify), and the server-side language / framework (PHP, ASP.NET, Ruby on Rails, Django, Laravel, Express). Results are directional, not exhaustive. The `render` fetch strategy is one of `browser` (headless browser that executes JavaScript — the default, so client-injected scripts like analytics, tag managers and pixels are detected), `auto` (Chrome-impersonated HTTP, escalating to a real browser only when blocked or JS-rendered), or `http` (HTTP only, no JavaScript — fastest, but sees only the server HTML); defaults to `browser`. Only public pages are supported; respect each site's terms of use and robots directives. Also returns `unmatched_evidence` (when present) — third-party script/stylesheet host domains and a `` value the detector saw on the page but doesn't yet have a named signature for; useful for spotting a vendor worth requesting coverage for.",
+ "description": "Fetches a public URL and fingerprints the web technologies it is built with — a BuiltWith / Wappalyzer-style detector. Returns a list of detected `technologies`, each with its `categories`, a `confidence` (`high`, `medium`, `low`), an optional `version`, and the `evidence` that matched. Covers JavaScript frameworks and libraries (React, Vue.js, Angular, Svelte, jQuery), web frameworks / static site generators (Next.js, Nuxt.js, Gatsby, Remix, SvelteKit, Astro, Hugo), CMS and website builders (WordPress, Drupal, Joomla, Ghost, Wix, Squarespace, Webflow), e-commerce (Shopify, WooCommerce, Magento, BigCommerce), analytics, ad pixels, and tag managers (Google Analytics, Google Tag Manager, Meta Pixel, LinkedIn, Bing, TikTok/Pinterest/Reddit pixels, Segment, Hotjar, Microsoft Clarity), CDNs, UI frameworks and fonts, payments (Stripe, PayPal, Klarna), live chat, marketing automation, A/B testing, consent management, CAPTCHAs (reCAPTCHA, hCaptcha, Turnstile), video, and search. It also inspects response headers (from a plain HTTP fetch) to identify the web server (nginx, Apache, IIS), the CDN / hosting provider (Cloudflare, CloudFront, Fastly, Vercel, Netlify), and the server-side language / framework (PHP, ASP.NET, Ruby on Rails, Django, Laravel, Express). Results are directional, not exhaustive. The `render` fetch strategy is one of `browser` (headless browser that executes JavaScript — the default, so client-injected scripts like analytics, tag managers and pixels are detected), `auto` (Chrome-impersonated HTTP, escalating to a real browser only when blocked or JS-rendered), or `http` (HTTP only, no JavaScript — fastest, but sees only the server HTML); defaults to `browser`. Only public pages are supported; respect each site's terms of use and robots directives. Also returns `unmatched_evidence` (when present) — third-party script/stylesheet host domains and a `` value the detector saw on the page but doesn't yet have a named signature for; useful for spotting a vendor worth requesting coverage for. `is_infrastructure` flags a URL whose host looks like backend CDN/DNS/cloud-vendor infrastructure rather than a real, human-navigable website. `reachable` is false only when the target could not be fetched at all (even after an automatic www./plain-HTTP retry) — `technologies` may still be partially populated from DNS-based signals alone in that case, and `failure_reason` explains what happened.",
"operationId": "web-techstack",
"parameters": [
{
diff --git a/pyproject.toml b/pyproject.toml
index c4d9822..833c120 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
[project]
name = "crawlora"
-version = "1.38.0.dev1"
+version = "1.39.0.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"
diff --git a/tests/test_client.py b/tests/test_client.py
index 7a00f4e..b288432 100644
--- a/tests/test_client.py
+++ b/tests/test_client.py
@@ -268,7 +268,7 @@ def transport(_request, _timeout):
def test_operation_metadata_count(self) -> None:
self.assertEqual(len(OPERATIONS), OPERATION_COUNT)
- self.assertEqual(OPERATION_COUNT, 1468)
+ self.assertEqual(OPERATION_COUNT, 1475)
def test_deprecated_endpoints_are_not_generated(self) -> None:
self.assertFalse(hasattr(CrawloraClient(api_key="api_test", base_url=self.base_url).google, "lens"))
@@ -299,7 +299,7 @@ def test_docs_cover_operations_and_recipes(self):
recipes_doc = root.joinpath("docs", "recipes.md").read_text()
for expected in [
- "Total operations: `1468`",
+ "Total operations: `1475`",
"`bing-search`",
"`GET /bing/search`",
"`bing.search`",