AXS Scraper - Events, Venues and Ticketing Status
Pricing
from $2.20 / 1,000 results
AXS Scraper - Events, Venues and Ticketing Status
Extract AXS events, venues, performers, series and promotions across nine regional catalogs (US, UK, AU, SE, CA, NZ, DE, FR, JP). Get dates, venue addresses and public ticketing status; inventory requires an invitation. Pay per delivered row plus a start fee.
Pricing
from $2.20 / 1,000 results
Rating
0.0
(0)
Developer
kane liu
Maintained by CommunityActor stats
1
Bookmarked
15
Total users
5
Monthly active users
8 hours ago
Last modified
Categories
Features
Share
Extract AXS events, venues and ticketing status as structured rows for calendars, research and alerts — across US, UK, AU, SE, CA, NZ, DE, FR and JP catalogs.
- Event titles, dates, venues, addresses and public sale status.
- Performers, series, promotions, genres and catalog URLs.
- On-sale configuration and invitation-only inventory snapshots, when available.
- Pay $3.00 per 1,000 delivered rows on the Free plan, plus a start fee.
What does AXS Scraper do?
AXS Scraper collects public information from AXS.com. It does not buy or reserve tickets and is not affiliated with AXS or AEG.
- Find events:
home,search,category,detailandvenue. - Find entities:
performer,series,offers,genres,cataloganddiscovery. - Check ticketing:
onsale,inventoryandwatch. - Optional ticket-offer rows:
includeOffersis off by default. Each additional row is billed at the same rate and counts toward the input's row limit.
What data can you extract from AXS?
Every row has rowType and a string id. Tables show selected fields; not every source supplies all of them. Catalog event entries use rowType event_link; other catalog entries use their entity's row type. All catalog rows have recordType: "catalog" and hold IDs and URLs only.
Events (event)
| Field | Description | Example |
|---|---|---|
eventId | AXS event ID | 1445907 |
title | Event name | Example concert |
url | Event page | https://www.axs.com/events/1445907 |
eventDateTimeUTC | Start time in UTC | 2026-12-12T02:00:00Z |
statusLabel | Public sale label | On Sale |
priceBasis | How to interpret prices | unavailable |
Venues (venue)
| Field | Description | Example |
|---|---|---|
venueName | Venue name | Example Hall |
address | Venue address fields | {"locality":"Denver","country":"US"} |
phones | Public contact numbers, if shown | [] |
emails | Public email addresses, if shown | [] |
leadAbsences | Reasons contact fields are empty | {"emails":"not_exposed_by_source"} |
Performers (performer)
| Field | Description | Example |
|---|---|---|
performerId | Artist ID | 9 |
name | Public artist name | Example Band |
Series (series)
| Field | Description | Example |
|---|---|---|
seriesId | Series ID | 12 |
Promotions (offer)
| Field | Description | Example |
|---|---|---|
offerId | Promotion ID, not a seat ID | 1 |
Genres (genre)
| Field | Description | Example |
|---|---|---|
title | Genre label | Rock |
Tours (tour)
| Field | Description | Example |
|---|---|---|
tourId | Tour ID from discovery | 123 |
Sale-status checks (watch)
| Field | Description | Example |
|---|---|---|
availabilityStatus | Public availability label | on_sale |
changedFields | Changes since the previous available check | ["availabilityStatus"] |
becameAvailable | Transition back to sale | true |
resaleShell | Primary sold out, AXS Official Resale still lists tickets | false |
recommendedIntervalSec | Suggested time before another check | 180 |
On-sale configuration (onsale)
| Field | Description | Example |
|---|---|---|
ticketUrlKind | Ticket page category | primary |
onsale | Available delivery methods, restrictions and configuration | {} |
Inventory snapshots (inventory)
| Field | Description | Example |
|---|---|---|
inventoryObserved | Whether inventory was observed | true |
inventoryGranularity | Detail level of the observation | price_level |
Ticket offers (ticket_offer)
| Field | Description | Example |
|---|---|---|
parentId | Parent event-level row ID | 1445907 |
offerGranularity | Offer, product or price-level detail | price_level |
availableQuantity | Observed quantity, when supplied | 8 |
How to scrape AXS
- Open AXS Scraper in Apify Console.
- Fill one target field, such as
searchQuerywithconcert. - Set
maxResultsto3for a small first run. - Click Start and wait for completion.
- Download the dataset or read it through the API.
An empty input runs a concert search with the form's example values, capped at 3 rows, billed normally. With mode: "auto", a target field selects the mode. Clear the prefilled keyword when switching to another target.
Home
Use home for upcoming events in the scanned pages, not a complete calendar.
Search
Use searchQuery for a keyword. Put locations in city, not the keyword.
Category
Choose music, sports, theatre, festival or comedy. A supported city or AXS city listing URL also selects a listing.
Detail
Supply eventIds or event URLs in startUrls.
Venue
Supply venueIds or venue URLs.
Catalog
Enumerate event, venue, performer or series URLs. Continue with RUN_SUMMARY.diagnostics.nextCursor as cursor, keeping the same entityTypes.
Catalog event entries are event_link rows. An event_link row has rowType, id, eventId, entityType, url, title, lastModified, images, source, engine, coverageBasis, recordType and scrapedAt. The id is the numeric event ID.
The title is built from the URL slug. It is not the real event name. An event_link row has no event name, date, venue or prices. For full event rows, run detail mode with eventIds.
Performer
Supply performerIds for specific artists, or leave them empty to list performers.
Series
Supply seriesIds, found via catalog.
Offers
List promotions, optionally by offerIds; they are not ticket-seat offers.
Genres
Use genres without a target for genre labels.
Discovery
Export events, venues, performers or tours. Keyword, city, category and date filters are unsupported here.
Onsale
Use onsale with event IDs or purchase links for configuration, not guaranteed inventory; no invitation key is needed. Supply at most 20 targets per run.
Inventory
Supply up to 10 targets and a developer-issued inventoryKey. Without valid access, no inventory rows return and warnings include inventory_locked; queues, expired links or rate limits can also block access.
Watch
Check up to 50 event IDs once per run. The suggested interval is 180 seconds, or 60 near the show; null means the show is over. inventoryOnChange optionally captures inventory after a return to sale, requires an invitation key and is limited to two events per run.
What to fill in
| Field | What to enter | Default |
|---|---|---|
mode | A mode above, or automatic selection | auto |
searchQuery, q | Keyword; q is an alias | Empty; prefill concert |
startUrls, eventIds | AXS URLs or event IDs | Empty |
venueIds, performerIds, seriesIds, offerIds | IDs for that entity | Empty |
ticketUrls | AXS purchase links for onsale or inventory | Empty |
category | One of the five categories above | Empty |
city, cityId, citySlug | City name, or ID and slug from an AXS city URL | Empty |
market | Regional catalog: us, uk, au, se, ca, nz, de, fr, jp | us |
maxResults | Rows per input, 1–5,000 | 70; prefill 3 |
maxPages | Listing pages to scan, 1–5 | 1 |
page, pageOffset | Continuation page and position within it | 1, 0 |
cursor | Catalog continuation string | Empty |
entityTypes | Entity names supported by the selected mode | ["events"] |
siteIds | Optional numeric AXS catalog partitions; at most 8 | Market's main catalog |
startDate, endDate | Inclusive event-date bounds; ISO date or datetime | Empty |
enrichDetails, enrichVenue | Add event details and venue addresses | true |
memberLinks | Series mode: add each member event's purchase page (promoId, promoPageUrl, ticketUrl when missing) via a headless browser, once per series; region-blocked pages leave no links | true |
includeOffers | Separate ticket-offer rows in onsale or inventory | false |
includeSeats | Keep observed seat labels on ticket-offer rows | true |
inventoryKey | Invitation key; keep it private | Empty |
nearShowHours | Watch's near-show window, 1–168 hours | 24 |
inventoryOnChange | Capture inventory after a return to sale | false |
watchState | Watch baseline {eventId: snapshot}: feed back the last run's watch row fields so a scheduled run detects changes | {} |
includeRaw, fields | Public source fields or selected output fields | false, empty |
availabilityStatus | Keep only listing-mode event rows with these statuses: on_sale, presale, sold_out, resale_only, coming_soon, unavailable, cancelled, postponed, unknown | Empty (all) |
officialOnly | In inventory, skip resale-marketplace targets; primary rows only | false |
Examples by mode:
Home
{"mode":"home","maxResults":3}
Search
{"mode":"search","searchQuery":"concert","maxResults":3}
Category
{"mode":"category","category":"music","city":"Denver, CO","maxResults":3}
Detail
{"mode":"detail","eventIds":["1445907"],"maxResults":1}
Venue
{"mode":"venue","venueIds":["124944"],"maxResults":3}
Catalog
{"mode":"catalog","entityTypes":["series"],"maxResults":3}
Performer
{"mode":"performer","maxResults":3}
Series
{"mode":"series","seriesIds":["12"],"maxResults":3}
Offers
{"mode":"offers","maxResults":3}
Genres
{"mode":"genres","maxResults":3}
Discovery
{"mode":"discovery","entityTypes":["tours"],"maxResults":3}
Onsale
{"mode":"onsale","eventIds":["1445907"],"includeOffers":true,"maxResults":3}
Inventory
{"mode":"inventory","eventIds":["1445907"],"inventoryKey":"YOUR_INVITATION_KEY","maxResults":1}
Watch
{"mode":"watch","eventIds":["1445907"],"maxResults":1}
maxItems and limit are accepted as maxResults. Close field-name misspellings are corrected; other unknown fields are ignored with a note. Unusable input stops before row delivery with an INVALID_INPUT: message naming the problem and expected form. No rows are charged for that failure; the start fee still applies. A missing required target can instead select another filled target or the example run.
Output example
Illustrative event row (example title and date):
{"rowType": "event","id": "1445907","eventId": "1445907","title": "Example concert","url": "https://www.axs.com/events/1445907","eventDateTimeUTC": "2026-12-12T02:00:00Z","venueName": "Example Hall","market": "us","statusLabel": "On Sale","priceLow": null,"priceHigh": null,"priceBasis": "unavailable","phones": [],"emails": [],"source": "axs.com"}
Export the dataset as JSON, CSV, Excel, XML, RSS or an HTML table. The key-value store also contains INPUT_ECHO, RUN_SUMMARY and, for terminal failures, ERROR_SUMMARY.
Why use this AXS scraper?
- Pay for delivered rows: unsuccessful requests are not separate billable rows.
- Understand missing data: unavailable prices stay
nulland absent contacts stay empty. - Batch targets: send several IDs or URLs in one run.
- No proxy setup: you do not need to set up proxies.
How much does it cost to scrape AXS?
Pricing is pay-per-event: a $0.005 start event plus a price per delivered row. The start charge is one event per GB of memory, with a minimum of one event. At the default 512 MB, the start charge is $0.005. Platform usage is included in these prices.
| Apify plan | Price per row | Price per 1,000 rows |
|---|---|---|
| Free | $0.003 | $3.00 |
| Starter | $0.003 | $3.00 |
| Scale | $0.0026 | $2.60 |
| Business | $0.0022 | $2.20 |
| Platinum | $0.002 | $2.00 |
| Diamond | $0.0016 | $1.60 |
maxResults applies to each input, defaults to 70 and allows up to 5,000. Larger requests are collected in parts of 70. All row types share that input's limit. Free-plan runs stop at 200 rows, and the developer allows 10 runs of this Actor on that plan. The whole run stops at Maximum cost per run (maxTotalChargeUsd in the API).
Example: one search delivering 3 rows on the Free plan at 512 MB costs 3 × $0.003 + $0.005 = $0.014.
- The Apify Free plan includes $5.00 in monthly usage credit (about 1,666 rows at
$0.003per row across Free-plan runs capped at 200 rows per run).
What happens when the run timeout is too short
A run that needs longer can pause automatically. Its status message says "Queued on the collection backend; this run will resume automatically when results are ready (about N s)." It temporarily appears as ABORTED, rather than a collection failure.
When results are ready, the same run resumes, reports "Resumed: delivering N rows.", writes to the same dataset and finishes as SUCCEEDED if collection succeeds. Already delivered rows are not delivered or charged twice.
Automatic pauses are limited to 3 per run. Keep the default 600-second timeout to reduce interruptions.
Rows reach the dataset as they are collected, not only at the end of the run. A run stopped by its own timeout, by maxTotalChargeUsd or by a cancelled run keeps every row delivered up to that point, and those rows are the ones charged.
Synchronous endpoints (run-sync, run-sync-get-dataset-items) wait at most 300 seconds and may return an empty dataset while the run is paused. For longer jobs, start asynchronously and read the dataset after SUCCEEDED, or use a succeeded-event webhook.
Use with AI agents and the API
Apify MCP server (Claude, ChatGPT, Cursor, VS Code)
Add this remote server to your MCP client:
https://mcp.apify.com?tools=lentic_clockss/axs-scraper
Sign in with Apify using OAuth, or send Authorization: Bearer <YOUR_APIFY_TOKEN>. The tool starts a run and returns run and dataset IDs; read rows with get-dataset-items. Clients without remote support can use npx @apify/actors-mcp-server --tools lentic_clockss/axs-scraper with APIFY_TOKEN set.
Example prompt: "Search AXS for concert and return at most 3 events with dates and venue names."
- Agent execution note: Set
maxResultsbetween5and20on exploratory tool calls to keep responses compact, and readRUN_SUMMARYandINPUT_REPORTfrom the default key-value store to inspect normalized inputs and delivered row counts. When a long run briefly reportsABORTEDwith the automatic-resume status message, wait for the same run ID to finish asSUCCEEDEDinstead of starting a duplicate run.
Apify API
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("lentic_clockss/axs-scraper").call(run_input={"searchQuery": "concert", "maxResults": 3})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item)
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });const run = await client.actor('lentic_clockss/axs-scraper').call({searchQuery: 'concert', maxResults: 3});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
For asynchronous HTTP use, send input JSON to POST https://api.apify.com/v2/acts/lentic_clockss~axs-scraper/runs with an Authorization: Bearer <YOUR_APIFY_TOKEN> header. After completion, read GET https://api.apify.com/v2/datasets/<datasetId>/items?format=json.
Integrations
Use the Integrations tab to connect results to Google Sheets, Make, Zapier, n8n, Slack, Airtable or a webhook.
FAQ
Is it legal to scrape AXS?
The Actor collects public data. You are responsible for complying with applicable terms and data-protection law. Processing personal data requires a lawful basis; public availability alone does not establish one.
Why did my run end as ABORTED?
Check its status message. An automatic pause resumes without intervention; a manual abort is different. See the timeout section above.
What does "New runs are paused until the live proxy configuration is confirmed." mean?
The Actor is temporarily not accepting new runs, so the run collects no rows; start it again later. Until 13 November 2026 the message was Chinese, beginning with "\u5b9e\u65f6\u4ee3\u7406\u914d\u7f6e\u5c1a\u672a\u5b8c\u6210\u5bf9\u8d26" (JSON-escaped).
How many results can I get?
Up to maxResults per input, subject to available matches, scanned pages, the run's cost cap and free-plan limits. It is a ceiling, not a guaranteed count. Since 2026-11-13 10:46 UTC, in home, detail, venue and category modes, and searches for events only without city, category or date filters, an event AXS returns without a required field no longer counts toward maxResults; the Actor moves to the next event. A run left with no rows because every event was skipped fails, with the skip warning as its status message.
Why are some fields empty?
AXS may not expose them. Metadata prices are not final quotes, and a zero placeholder is not a free ticket.
Why are event fields gone from leadAbsences?
leadAbsences explains empty contact fields only. Until 13 November 2026, it also listed missing event fields in Chinese, such as "\u672c\u7ad9\u65e0\uff1asource=api_detail record has no boxOffice key" (JSON-escaped). quality.missingFields now marks them unavailable_in_surface instead of not_present, with no quality.evidence.
Are inventory quantities individual seats?
Not necessarily. inventoryGranularity can be price_level.
Does the Actor buy tickets?
No. Purchase links are observation inputs.
How do I continue a listing?
Read RUN_SUMMARY.diagnostics. Where present, use nextPage and nextPageOffset as page and pageOffset, keeping the same filters. Catalog uses nextCursor.
Which cities work?
Use a city name within the selected market or an AXS city URL. For an unknown city ID, supply its citySlug; never put the city in searchQuery.
Limitations
- Nine regional catalogs are supported (
us,uk,au,se,ca,nz,de,fr,jp).inventoryandonsaleroute by the event's region, notmarket; other storefronts are not covered. - City, category and date filters apply within scanned pages. Check
coverageTruncated; a short page does not prove complete coverage. - Inventory access and seat detail are not guaranteed.
includeOffersworks only inonsaleandinventory. A target without offers may still return an event-level row.- Attribute lists are capped at 50 entries, with counts when truncated.
- Watch comparisons need a previous observation (in-memory, or passed in
watchState); not a permanent history.
Related scrapers
More event and ticketing scrapers from the same publisher:
- Ticketmaster Scraper
- SeatGeek Scraper
- StubHub Scraper
- Eventim Scraper
- Eventbrite Scraper
- Stealth Web Scraper
- Email Validator
Browse all of our scrapers at apify.com/lentic_clockss.
Support
Found a problem or need another field? Open an issue in the Issues tab of this Actor's page and include the run ID and the input you used. Remove invitation keys and tokens before sharing input.