AXS Scraper & API | Events and Venue Data · Apify
AXS Scraper - Events, Venues and Ticketing Status avatar

AXS Scraper - Events, Venues and Ticketing Status

Pricing

from $2.20 / 1,000 results

Go to Apify Store
AXS Scraper - Events, Venues and Ticketing Status

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

kane liu

Maintained by Community

Actor stats

1

Bookmarked

15

Total users

5

Monthly active users

10 minutes ago

Last modified

Features

Limited permissions

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, detail and venue.
  • Find entities: performer, series, offers, genres, catalog and discovery.
  • Check ticketing: onsale, inventory and watch.
  • Optional ticket-offer rows: includeOffers is 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)

FieldDescriptionExample
eventIdAXS event ID1445907
titleEvent nameExample concert
urlEvent pagehttps://www.axs.com/events/1445907
eventDateTimeUTCStart time in UTC2026-12-12T02:00:00Z
statusLabelPublic sale labelOn Sale
priceBasisHow to interpret pricesunavailable

Venues (venue)

FieldDescriptionExample
venueNameVenue nameExample Hall
addressVenue address fields{"locality":"Denver","country":"US"}
phonesPublic contact numbers, if shown[]
emailsPublic email addresses, if shown[]
leadAbsencesReasons contact fields are empty{"emails":"not_exposed_by_source"}

Performers (performer)

FieldDescriptionExample
performerIdArtist ID9
namePublic artist nameExample Band

Series (series)

FieldDescriptionExample
seriesIdSeries ID12

Promotions (offer)

FieldDescriptionExample
offerIdPromotion ID, not a seat ID1

Genres (genre)

FieldDescriptionExample
titleGenre labelRock

Tours (tour)

FieldDescriptionExample
tourIdTour ID from discovery123

Sale-status checks (watch)

FieldDescriptionExample
availabilityStatusPublic availability labelon_sale
changedFieldsChanges since the previous available check["availabilityStatus"]
becameAvailableTransition back to saletrue
resaleShellPrimary sold out, AXS Official Resale still lists ticketsfalse
recommendedIntervalSecSuggested time before another check180

On-sale configuration (onsale)

FieldDescriptionExample
ticketUrlKindTicket page categoryprimary
onsaleAvailable delivery methods, restrictions and configuration{}

Inventory snapshots (inventory)

FieldDescriptionExample
inventoryObservedWhether inventory was observedtrue
inventoryGranularityDetail level of the observationprice_level

Ticket offers (ticket_offer)

FieldDescriptionExample
parentIdParent event-level row ID1445907
offerGranularityOffer, product or price-level detailprice_level
availableQuantityObserved quantity, when supplied8

How to scrape AXS

  1. Open AXS Scraper in Apify Console.
  2. Fill one target field, such as searchQuery with concert.
  3. Set maxResults to 3 for a small first run.
  4. Click Start and wait for completion.
  5. 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.

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

FieldWhat to enterDefault
modeA mode above, or automatic selectionauto
searchQuery, qKeyword; q is an aliasEmpty; prefill concert
startUrls, eventIdsAXS URLs or event IDsEmpty
venueIds, performerIds, seriesIds, offerIdsIDs for that entityEmpty
ticketUrlsAXS purchase links for onsale or inventoryEmpty
categoryOne of the five categories aboveEmpty
city, cityId, citySlugCity name, or ID and slug from an AXS city URLEmpty
marketRegional catalog: us, uk, au, se, ca, nz, de, fr, jpus
maxResultsRows per input, 1–5,00070; prefill 3
maxPagesListing pages to scan, 1–51
page, pageOffsetContinuation page and position within it1, 0
cursorCatalog continuation stringEmpty
entityTypesEntity names supported by the selected mode["events"]
siteIdsOptional numeric AXS catalog partitions; at most 8Market's main catalog
startDate, endDateInclusive event-date bounds; ISO date or datetimeEmpty
enrichDetails, enrichVenueAdd event details and venue addressestrue
memberLinksSeries 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 linkstrue
includeOffersSeparate ticket-offer rows in onsale or inventoryfalse
includeSeatsKeep observed seat labels on ticket-offer rowstrue
inventoryKeyInvitation key; keep it privateEmpty
nearShowHoursWatch's near-show window, 1–168 hours24
inventoryOnChangeCapture inventory after a return to salefalse
watchStateWatch baseline {eventId: snapshot}: feed back the last run's watch row fields so a scheduled run detects changes{}
includeRaw, fieldsPublic source fields or selected output fieldsfalse, empty
availabilityStatusKeep only listing-mode event rows with these statuses: on_sale, presale, sold_out, resale_only, coming_soon, unavailable, cancelled, postponed, unknownEmpty (all)
officialOnlyIn inventory, skip resale-marketplace targets; primary rows onlyfalse

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 null and 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 planPrice per rowPrice 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.003 per 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 maxResults between 5 and 20 on exploratory tool calls to keep responses compact, and read RUN_SUMMARY and INPUT_REPORT from the default key-value store to inspect normalized inputs and delivered row counts. When a long run briefly reports ABORTED with the automatic-resume status message, wait for the same run ID to finish as SUCCEEDED instead of starting a duplicate run.

Apify API

from apify_client import ApifyClient
client = 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

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). inventory and onsale route by the event's region, not market; 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.
  • includeOffers works only in onsale and inventory. 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.

More event and ticketing scrapers from the same publisher:

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.