Concert Archives Scraper - Concerts, Tours, Venues & Setlists avatar

Concert Archives Scraper - Concerts, Tours, Venues & Setlists

Pricing

from $1.20 / 1,000 concert records

Go to Apify Store
Concert Archives Scraper - Concerts, Tours, Venues & Setlists

Concert Archives Scraper - Concerts, Tours, Venues & Setlists

Scrape Concert Archives concert and tour history: past and upcoming dates, venues, cities, line-ups, tours, genres, tickets and setlists. Search by band, venue or location, or paste links. Incremental monitoring with NEW, UPDATED, REAPPEARED, EXPIRED, resume and MCP export.

Pricing

from $1.20 / 1,000 concert records

Rating

0.0

(0)

Developer

Abot API

Abot API

Maintained by Community

Actor stats

2

Bookmarked

1

Total users

1

Monthly active users

2 days ago

Last modified

Share

Concert Archives Scraper: Concert History, Tour Dates & Setlists

Concert Archives Scraper turns Concert Archives, the fan-built live-music database, into a clean concert-history API. Search a band, a venue or a city and get its complete concert history: past dates going back decades, upcoming shows, the billed line-up, tours, ticket links and the songs actually played. Search by name or paste links, then export to JSON, CSV or Excel, or pull the results straight into your app through the API.

Why This Scraper?

  • Three ways to find a history. Search by band, venue or city name and the top matching page is walked automatically, or paste any Concert Archives link (band, venue, location, a single concert, a search link or an advanced search link) and skip the lookup entirely.
  • Full history, not just upcoming shows. A walk follows a band, venue or location's concert table forward to its natural end, from decades-old shows to next month's dates.
  • Concert-level depth on demand. Fetch each concert's own page for the full billed line-up with genres, the description, the poster image, the ticket seller and link, the event status and the community line-up, attendee and photo counts, only when you switch it on.
  • Setlists included. Pull the songs actually played, per band, for concerts that have a setlist on the site.
  • Filters that tell you the truth. Upcoming/past and Year filters apply wherever the site actually supports them, and a run says so out loud in the log rather than quietly handing back an unfiltered result labelled as filtered.
  • Built for monitoring. Incremental mode returns only new, changed and reappeared concerts on repeat runs, and a blocked run fails loudly instead of returning an empty dataset.
  • No account, no key. Nothing to sign in with, and the default proxy setting works out of the box.

Use Cases

  • Fans and ticket buyers: check exactly when a band last played your city, and where the tour goes next.
  • Promoters and venue bookers: review a venue's full booking history and genre mix before pitching a show.
  • Music journalists and researchers: build tour timelines, genre trends and lineup histories for a band or a scene.
  • Setlist and stats trackers: collect the songs played per show to spot patterns across a tour.
  • Archivists and fan sites: back up a band's or a venue's concert record outside the site itself.

Data You Get

Sample shape: values are illustrative placeholders, not from a live record.

FieldExample
kind"concert"
recordId / concertId"00000000"
url / sluglink to the concert page / "sample-band--00000000"
title"Sample Band"
startDate / endDate"2027-01-15" / "2027-01-15"
dateText"Jan 15, 2027"
isUpcomingtrue
eventStatus"scheduled" (also "cancelled", "postponed", "rescheduled", when details are fetched)
tourName"Sample World Tour"
headliner"Sample Band"
lineup["Sample Band", "Sample Support"]
performersname, page link, genre and image per billed act (when details are fetched)
artistGenres["rock", "alternative"]
venueName / venueUrl"Sample Arena" / link
venueAddress / venueCity / venueRegion / venueCountry"Sample City, Sample State, Sample Country" / "Sample City" / "Sample State" / "Sample Country"
locationText / locationUrl"Sample City, Sample Country" / link
description / imageUrlposter blurb / poster image link (when details are fetched)
ticketUrl / ticketVendorticket link / "Sample Tickets"
hasSetlist / hasPhotos / labelstrue / true / ["Upcoming Concert", "Has Setlist"]
lineupCount / attendeeCount / photoCount4 / 42 / 12
setlists / setlistCountsongs in order per band, plus a link to the setlist page / 1
changeType / changedFields / firstSeenAt / lastSeenAt"NEW" (also "UPDATED", "UNCHANGED", "REAPPEARED", "EXPIRED") / ["attendeeCount"] / timestamps

Every record is a concert; there is no separate venue or band record type. Dates come from an archive maintained by fans: very old entries can be approximate, and startDate is left empty rather than guessed when the site does not publish a parseable date. Community counters (attendeeCount, photoCount, setlistCount) are counts only; attendee names, comment authors and photo uploader names are never collected.

How to Use

  1. Pick a mode: keyword search (band, venue or location) or paste Concert Archives links.
  2. In search mode, type a keyword and pick what it should match; in URL mode, paste one link per line.
  3. Set the Upcoming/past and Year filters if you need them, and Max items / Max pages per scope to control run size and cost.
  4. Click Start, then download the dataset as JSON, CSV or Excel, or read it through the API.

Search a band's full history:

{
"mode": "search",
"query": "Sample Band",
"searchType": "bands"
}

Search a venue, upcoming shows only:

{
"mode": "search",
"query": "Sample Arena",
"searchType": "venues",
"dateFilter": "upcoming"
}

Paste links (venue history plus one specific concert):

{
"mode": "url",
"urls": [
"https://www.concertarchives.org/venues/sample-arena",
"https://www.concertarchives.org/concerts/sample-band--00000000"
]
}

Fast, list-only pull with no per-concert surcharge:

{
"mode": "search",
"query": "Sample Band",
"searchType": "bands",
"fetchDetails": false,
"maxItems": 100
}

Run it from your code

Python:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("abotapi/concert-archives-scraper").call(
run_input={"mode": "search", "query": "Sample Band", "searchType": "bands"})
for concert in client.dataset(run["defaultDatasetId"]).iterate_items():
print(concert["startDate"], concert["venueName"])

JavaScript:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('abotapi/concert-archives-scraper').call({
mode: 'search', query: 'Sample Band', searchType: 'bands',
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();

Or connect it to Make, Zapier, n8n, Google Sheets or webhooks from the Integrations tab.

Depth and cost

  • Max items defaults to 20. Set it to 0 for the whole history, which for a long-running band can be thousands of concerts across dozens of pages.
  • In URL mode, Max items is shared out evenly across the pasted links (for example 20 across 2 links is up to 10 each). A link that runs out early does not hand its unused share to the others.
  • Max pages per scope defaults to 0 (no limit), so Max items is the only cap that stops a run early by default.
  • The Upcoming/past and Year filters apply to band, venue and location histories (Year to band and venue only). A pasted advanced search link ignores them and the log says so; a pasted single-concert link is always read as-is.
  • Fetch concert details (on by default) adds a per-concert surcharge for the full billed line-up, description, poster, ticket link and community counts. Turn it off for a fast, list-only pull.
  • Include setlists (off by default) needs Fetch concert details on, and adds one extra read per concert; it does not add a second surcharge.

Resume and recurring updates

  • Resume (resumeFromRunId) continues ONE interrupted pull: paste its run or dataset ID and the actor skips every concert already collected there, so you don't pay to collect it twice.
  • Incremental mode (incrementalMode) is for running the same search or link set on a schedule. Each concert is classified NEW, UPDATED (with changedFields), UNCHANGED (suppressed and not billed unless emitUnchanged is on), REAPPEARED, or EXPIRED (only after a run that scanned its whole tracked scope without hitting a cap or a page error, and only with emitExpired on). State is kept separately per search, link and filter setup; use stateKey to name or deliberately share a monitoring campaign.
  • If you paste more than one link in URL mode, they share one state and one run: EXPIRED only fires when every pasted link finished cleanly in that same run, not just the ones that did. A cap hit or a failed page on any one link skips EXPIRED for the whole run rather than risk tombstoning a concert that a different link simply did not reach. For example, if you paste a band link and a venue link and the venue page fails to load, no concert from the band link is marked EXPIRED in that run either, even though the band link finished.
  • Using Emit expired with several pasted links? Set Max items to 0. In URL mode, Max items is split evenly across the pasted links. When a link uses up its share partway through its own last page, the run does not currently count that as a cap, so the concerts left unread on that page can be marked EXPIRED even though they are still listed. With Max items at 0 nothing is cut short and this cannot happen. Search mode and single-link runs are not affected.

Send results into your apps (MCP connectors)

Optionally pipe the results straight into the tools you already use, over Model Context Protocol (MCP). Authorize a connector once under Apify, Settings, API & Integrations, then set:

  • mcpConnectors: the connector IDs to send to, one per line.
  • notionParentPageUrl: the Notion page to create item pages under, for the Notion connector.
  • maxNotifyListings: how many items to send per connector per run.

Notion gets one page per concert. Other connectors get a best-effort write or a digest. This never changes the dataset, and a connector problem never fails the scrape. Leave mcpConnectors empty to skip.

Input Parameters

ParameterTypeDefaultDescription
modestringsearchsearch (keyword lookup) or url (paste links).
querystringthe killersSearch mode: a keyword, for example a band, venue or city name.
searchTypestringbandsSearch mode: match the keyword against bands, venues, or locations.
urlsarraysample venue linkURL mode: Concert Archives links to read, one per line.
dateFilterstringallNarrow the history to all, upcoming, or past concerts.
yearinteger0Only concerts from this year (0 = every year). Band and venue pages support it; location pages ignore it and the run says so.
fetchDetailsbooleantrueRead each concert's own page for the full line-up, description, poster, ticket seller and community counts. Adds a per-concert surcharge.
includeSetlistsbooleanfalseAlso return the songs played, per band. Needs fetchDetails on.
maxItemsinteger20Stop after this many concerts (0 = no limit).
maxPagesinteger0Upper bound on pages walked per band, venue, location or link (0 = no limit).
resumeFromRunIdstring(none)Continue one interrupted pull without collecting the same concerts twice.
incrementalModebooleanfalseReturn only new, changed and reappeared concerts on scheduled runs.
stateKeystring(none)Name or share an incremental-mode monitoring campaign.
emitUnchangedbooleanfalseAlso return (and bill) unchanged concerts.
emitExpiredbooleanfalseAlso return (and bill) concerts no longer found, after a complete scan.
mcpConnectorsarray(none)Optional: send results into apps you authorized under Integrations.
notionParentPageUrlstring(none)Notion connector only: page under which item pages are created.
maxNotifyListingsinteger50Cap on items exported per connector per run. Does not affect the dataset.
proxyConfigurationobjectApify ProxyConnection settings.

Output Example

Sample shape: values are illustrative placeholders, not from a live record.

{
"kind": "concert",
"recordId": "00000000",
"concertId": "00000000",
"url": "https://www.concertarchives.org/concerts/sample-band--00000000",
"slug": "sample-band--00000000",
"title": "Sample Band",
"startDate": "2027-01-15",
"endDate": "2027-01-15",
"dateText": "Jan 15, 2027",
"isUpcoming": true,
"eventStatus": "scheduled",
"tourName": "Sample World Tour",
"headliner": "Sample Band",
"lineup": ["Sample Band", "Sample Support"],
"performers": [{ "name": "Sample Band", "url": "https://www.concertarchives.org/bands/sample-band", "genre": "rock", "imageUrl": null }],
"artistGenres": ["rock", "alternative"],
"venueName": "Sample Arena",
"venueUrl": "https://www.concertarchives.org/venues/sample-arena",
"venueAddress": "Sample City, Sample State, Sample Country",
"venueCity": "Sample City",
"venueRegion": "Sample State",
"venueCountry": "Sample Country",
"locationText": "Sample City, Sample Country",
"locationUrl": "https://www.concertarchives.org/locations/sample-city",
"description": "A sample tour stop.",
"imageUrl": "https://img.example/sample.jpg",
"ticketUrl": "https://tickets.example/sample",
"ticketVendor": "Sample Tickets",
"hasSetlist": true,
"hasPhotos": true,
"labels": ["Upcoming Concert", "Has Setlist"],
"lineupCount": 2,
"attendeeCount": 42,
"photoCount": 12,
"setlists": [{ "artist": "Sample Band", "songs": ["Sample Song One", "Sample Song Two"], "setlistUrl": null }],
"setlistCount": 1,
"changeType": "NEW",
"changedFields": [],
"firstSeenAt": "2026-09-29T00:00:00+00:00",
"lastSeenAt": "2026-09-29T00:00:00+00:00"
}

Plan Requirement

The default proxy setting works out of the box on every Apify plan; there is no need to switch to the residential proxy group for this site. When the site's edge answers challenges instead of pages, the actor automatically uses a backup connection for the affected reads and returns to the primary lane afterwards.

FAQ

How much does it cost?

You pay per concert returned, with the detail surcharge billed only when Fetch concert details is on. The Pricing tab shows the current rates. Use Max items to cap the cost of any run.

This actor collects only publicly available concert-history data, and deliberately skips the personal identities behind attendee, comment and photo counts. You are responsible for how you use the results: follow Concert Archives' terms and the laws that apply to you, and get legal advice if you plan commercial redistribution.

Can I get only new or changed concerts on a schedule?

Yes. Schedule the actor from the Schedules tab and turn on Incremental mode. Each run then returns only new, updated and reappeared concerts, and unchanged ones are not billed unless you turn on Emit unchanged.

What is the difference between Resume and Incremental mode?

They solve different problems. Resume (resumeFromRunId) continues ONE specific interrupted pull so a large history does not need to be collected twice. Incremental mode is for running the SAME search or link set again and again (for example weekly) and getting only what changed since last time. Use Resume for a one-off retry, Incremental mode for ongoing monitoring.

Why did my run fail instead of returning an empty dataset?

If nothing could be read at all, the run fails with a clear message so "no concerts found" is never confused with "nothing could be read". Run it again in a few minutes. In search mode, a keyword that matches no band, venue or location also stops with a message telling you so: check the spelling or switch Search type. A band, venue or location that genuinely has no concerts for your filters still succeeds with an empty result.

Does this collect any personal data from concertgoers?

No. Concerts on Concert Archives carry attendee lists, comments and user-uploaded photos tied to real accounts. This actor returns only the counts of those (attendeeCount, photoCount, setlistCount) and never the names, usernames or comment text behind them.

Can I use it with AI agents or MCP?

Yes. Call it from any Apify integration or MCP client, and use the connector field to push results into Notion or another app you authorized under Integrations.

๐Ÿ”— Want more travel data?

Pair this actor with these related scrapers from the same team:

โœˆ๏ธ Pollstar Scraper
Scrape Pollstar upcoming concerts and tour dates: play date, venue with full address and...
๐Ÿงฉ Songkick Scraper
Scrape Songkick concert and event calendars: upcoming and past dates, venues, cities...
๐Ÿงฉ Bandsintown Scraper
Scrape Bandsintown concert and festival dates: artist tour calendars, venue profiles...
โšฝ Eventim Scraper
Scrape CTS Eventim Germany and EU event catalogue: concerts, festivals, comedy, sports...
๐Ÿ›’ SeatGeek Scraper
Scrape SeatGeek events with ticket price ranges (lowest, highest, average, median)...
๐Ÿงฉ Viagogo Scraper
Scrape Viagogo events by artist, production, venue, city, category, or URL. Extract event...

๐Ÿ‘‰ Browse all abotapi scrapers

๐Ÿ’ฌ Support & custom scrapers

  • ๐Ÿž Found a bug or a missing field? Open a ticket on the Issues tab. We usually reply within hours.
  • ๐Ÿ› ๏ธ Need another site, extra fields or a private build? Email contact@abotapi.com or message Telegram @abotapi.
  • โญ Enjoying it? A quick review on the actor page helps other users find it.