Bandsintown Scraper - Concerts, Artists & Venues
Pricing
from $1.00 / 1,000 event records
Bandsintown Scraper - Concerts, Artists & Venues
Scrape Bandsintown concert and festival dates: artist tour calendars, venue profiles, ticket links, lineups, RSVP counts and genres. Search by artist name or paste artist, venue or event links. MCP export included.
Pricing
from $1.00 / 1,000 event records
Rating
0.0
(0)
Developer
Abot API
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
2
Monthly active users
21 hours ago
Last modified
Categories
Share
Bandsintown Scraper: Concert Dates, Artists & Venues
Bandsintown Scraper turns Bandsintown into a clean concert data feed. Get an artist's full tour calendar, venue profiles, ticket links, lineups, RSVP counts and genres. Search by one or more artist names, or paste Bandsintown artist, venue or event links directly, then export to JSON, CSV or Excel, or pull the results straight into your app through the API.
Why This Scraper?
- Full event record. Date, start/end time, timezone, on-sale date, lineup, ticket offers, sold-out and free flags, RSVP count and genre.
- Full artist profile. Bio, hometown, genre, follower count, official links (Spotify, Instagram, website, and more) and both the upcoming and past show list.
- Full venue profile. Address, coordinates, phone number, follower count, verified/premium flags and the venue's own upcoming calendar.
- Two ways in. Search by one or more artist names, or paste a Bandsintown artist, venue or event link directly.
- Upcoming or full history. Choose upcoming dates only, or an artist's entire date history.
- Built for schedules. Incremental mode returns only new, updated and reappeared events on recurring runs, and Resume continues one interrupted run without paying twice.
- Send results into your apps. Optional MCP export to Notion or any other connector you've authorized, alongside the normal dataset.
Use Cases
- Concert alert bots and apps: watch an artist's or venue's calendar and notify fans the moment a new date, presale or sold-out flip appears.
- Tour and routing research: build a dataset of an artist's full date history across cities, venues and years.
- Fan and ticketing tools: surface ticket links, RSVP counts and lineups for a setlist site, fan club or resale tool.
- Venue and promoter tracking: monitor a specific venue's upcoming calendar for booking or competitive research.
- Music industry analytics: correlate follower counts, genres and touring activity across many artists at once.
Data You Get
Sample shape: values are illustrative placeholders, not from a live listing.
| Field | Example |
|---|---|
kind | "event" |
eventId | "500000123" |
url | "https://www.bandsintown.com/e/500000123" |
title | "Wren Halloway at Sable Point Arena" |
datetime / startsAt | "2027-08-14T20:00:00" |
timezone | "America/Denver" |
onSaleDatetime | "2027-05-01T10:00:00" |
lineup | ["Wren Halloway", "Vellum Kites"] |
offers | [{"type": "Tickets", "url": "https://www.bandsintown.com/t/500000123", "status": "available"}] |
soldOut / free | false / false |
rsvpCount | 312 |
genre | "Indie Folk" |
artistName | "Wren Halloway" |
artistUrl | "https://www.bandsintown.com/a/800000045-wren-halloway" |
artistTrackerCount | 15230 |
artistBio | "Wren Halloway is a fictional touring artist used here for illustration only." |
artistLocation | "Cascade Bay, Freedonia" |
venueName | "Sable Point Arena" |
venueCity / venueRegion / venueCountry | "Rivermede" / "Halden" / "Freedonia" |
venuePhoneNumber | "+1-555-0142" |
venueFollowerCount | 4820 |
With incremental mode on, every row also carries changeType (NEW, UPDATED, UNCHANGED, REAPPEARED or EXPIRED), changedFields, firstSeenAt and lastSeenAt, described under "Resume and recurring updates" below. There is no separate record kind for artists or venues: an artist's or venue's own show history is embedded on each event record as artistUpcomingEvents, artistPastEvents and venueUpcomingEvents when Fetch full details is on.
How to Use
- Pick a mode:
search(by artist name) orurl(paste links). - Fill in the fields for that mode, and turn on Fetch full details if you want the fuller field set (adds a per-event surcharge and is slower per event).
- Set Max items, and optionally Max pages, to control run size and cost, then click Start.
- Download the dataset as JSON, CSV or Excel, or read it through the API.
Search by artist name:
{"mode": "search","artistNames": ["Ed Sheeran"],"dateRange": "upcoming","fetchDetails": true,"maxItems": 5}
Search across an artist's full date history, base fields only:
{"mode": "search","artistNames": ["Ed Sheeran"],"dateRange": "all","fetchDetails": false,"maxItems": 30}
Read specific artist, venue and event links:
{"mode": "url","urls": ["https://www.bandsintown.com/a/190899-ed-sheeran","https://www.bandsintown.com/v/10006301-lincoln-financial-field","https://www.bandsintown.com/e/107381648-ed-sheeran-at-lincoln-financial-field"],"fetchDetails": true,"maxItems": 20}
Two artists in one run, base fields only:
{"mode": "search","artistNames": ["Metallica", "Zach Bryan"],"dateRange": "upcoming","fetchDetails": false,"maxItems": 10}
Run it from your code
Python:
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("abotapi/bandsintown-concert-event-scraper").call(run_input={"mode": "search","artistNames": ["Ed Sheeran"],"dateRange": "upcoming","maxItems": 5,})for event in client.dataset(run["defaultDatasetId"]).iterate_items():print(event["title"], event["venueName"], event["datetime"])
JavaScript:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });const run = await client.actor('abotapi/bandsintown-concert-event-scraper').call({mode: 'search',artistNames: ['Ed Sheeran'],dateRange: 'upcoming',maxItems: 5,});const { items } = await client.dataset(run.defaultDatasetId).listItems();
Or connect it to Make, Zapier, n8n, Google Sheets or webhooks from the Integrations tab.
Max items and Max pages
Max items is the run's only cap by default (0 = no limit) and applies across every mode. Max pages only matters when the run walks an artist's or venue's own show list, that is, search mode or a pasted artist/venue link in URL mode: Bandsintown ships that whole upcoming-show list in one payload rather than page by page, so Max pages simply keeps only the first N of those already-listed shows before they are read and counted against Max items. It has no effect on a single pasted event link, since there is no list to walk there. Leave it at its default (0, unlimited) unless you need a second, tighter limit per artist or venue.
Resume and recurring updates
Two different tools live under one input section. Pick by what you want:
Resume from a previous run (resumeFromRunId) continues ONE specific interrupted run. Paste the run ID (or its dataset ID) and the actor skips every event that run already collected, so a big pull can be finished without paying for the same rows twice.
Incremental mode (incrementalMode) is for running the same scope again and again, for example a daily schedule over the same artists or venue links, and getting only what changed. The first run returns every matching event as NEW. Later runs compare each event against the saved baseline and return only:
NEW, an event that was not in the previous run,UPDATED, an event whose details changed (rescheduled date, new ticket status, new lineup, and so on);changedFieldsnames exactly which fields moved,REAPPEARED, an event that was previously tombstoned as EXPIRED and has now come back.
Every row also carries firstSeenAt and lastSeenAt. Nothing changed this run? The run succeeds with an explanatory status and no rows, so you are never billed for a snapshot you already have.
Two opt-in extras (both bill extra rows, both off by default): emitUnchanged also returns unchanged events, and emitExpired returns events that are no longer found, but only after a run that fully scanned the tracked scope with no failed reads, never after a run capped by Max items or a Resume run, because a partial scan cannot tell "gone" apart from "not reached yet." REAPPEARED can therefore only ever occur for an event that a previous complete scan (with emitExpired on) had already marked EXPIRED; it is never produced on its own or "by default."
State is stored per scope (mode, artist list, link set, date range, detail setting) in a dedicated key-value store, or under stateKey if you name a campaign. Combining Resume with an Incremental mode state key that already has saved state fails the run with a clear message rather than mixing the two silently; Resume only bootstraps cleanly into a brand-new Incremental mode state key.
A separate caveat when Resume walks the same artist or venue link repeatedly: pairing it with a small, fixed Max pages value can return nothing new, because Max pages always keeps the FRONT of that calendar's already-listed shows before Resume's already-collected filter is applied, so if Resume already has everything in that front window, there is nothing left in it to find even though later shows exist. Leave Max pages at its default (unlimited) when combining it with Resume.
Known limitation, by design: with fetchDetails on, the embedded artist/venue show-history lists (artistUpcomingEvents, artistPastEvents, venueUpcomingEvents) are excluded from change detection and from the stored baseline, they duplicate the tracked events themselves (a new show arrives as its own NEW row, a cancelled one as EXPIRED), so diffing the embedded copy would only add cost and false positives. This actor has no separate "cancelled" field on an event; a cancelled or otherwise no-longer-listed show simply disappears from the calendar, which is why Incremental mode's EXPIRED tombstone (not a status field) is what surfaces a cancellation, alongside a show that has simply passed.
Send results into your apps (MCP connectors)
Set mcpConnectors to one or more connector IDs authorized under Settings, API & Integrations on your Apify account, and every collected event is also written into the apps behind those connectors as the run finishes. The Notion connector creates one page per event (set notionParentPageUrl to the page it should file under); other connectors get a best-effort record write or a summary digest. This never changes what lands in the dataset, it is a side channel on top of the normal output.
Input Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
mode | string | search | search looks up an artist's calendar by name; url reads pasted links. |
artistNames | array | none (prefilled with ["Ed Sheeran"]) | Search mode: one artist name per line, exactly as it appears on Bandsintown. |
dateRange | string | upcoming | Search mode: upcoming or all (upcoming and past). |
urls | array | none (prefilled with a sample artist link) | URL mode: Bandsintown artist (/a/), venue (/v/) or event (/e/) links, one per line. |
fetchDetails | boolean | false | Adds artist/venue follower counts, venue phone and verified/premium status, and full upcoming/past show history. Search mode also picks up timezone, genre, RSVP count and artist bio this way (URL mode already includes those four for free). Adds a per-event surcharge whenever it actually returns an enriched record. Reads each page directly, roughly 10-15 seconds per event, so a 20-event run with this on typically takes 4-5 minutes; off by default for a fast, near-instant run with fewer fields. |
maxItems | integer | 20 | Stop after this many events. 0 = no limit. |
maxPages | integer | 0 | Optional second, stricter cap on how many of an artist's or venue's own upcoming shows are walked, on top of Max items. 0 = no extra cap. |
resumeFromRunId | string | none | Paste a previous run ID or dataset ID to continue one interrupted run without returning, or charging for, events it already collected. |
incrementalMode | boolean | false | Turn on for recurring monitoring of the same scope: later runs return only NEW, UPDATED and REAPPEARED events. See "Resume and recurring updates" above. |
stateKey | string | none | Optional name for an Incremental mode campaign, so its state stays stable or is deliberately shared across differently configured runs. |
emitUnchanged | boolean | false | Incremental mode: also return events that have not changed, marked UNCHANGED (bills extra rows). |
emitExpired | boolean | false | Incremental mode: also return events no longer found after a complete scan, marked EXPIRED (bills extra synthetic rows). |
mcpConnectors | array | none | Optional Model Context Protocol connector IDs to pipe results into (Notion, and so on). |
notionParentPageUrl | string | none | Notion parent page URL or ID (Notion connector only). |
maxNotifyListings | integer | 50 | Cap on items written to each connector per run. |
proxyConfiguration | object | none (prefilled with {"useApifyProxy": true}) | Connection settings. The prefilled default works out of the box. |
Output Example
{"kind": "event","eventId": "500000123","url": "https://www.bandsintown.com/e/500000123","title": "Wren Halloway at Sable Point Arena","datetime": "2027-08-14T20:00:00","startsAt": "2027-08-14T20:00:00","endsAt": null,"timezone": "America/Denver","datetimeDisplayRule": "datetime","onSaleDatetime": "2027-05-01T10:00:00","festivalStartDate": null,"festivalEndDate": null,"lineup": ["Wren Halloway", "Vellum Kites"],"offers": [{"type": "Tickets", "url": "https://www.bandsintown.com/t/500000123", "status": "available"}],"soldOut": false,"free": false,"presale": null,"bandsintownPlus": false,"showMultiTicket": false,"imageUrl": "https://example.com/wren-halloway.jpg","thumbUrl": "https://example.com/wren-halloway-thumb.jpg","description": "Wren Halloway at Sable Point Arena 2027-08-14T20:00:00","rsvpCount": 312,"genre": "Indie Folk","artistId": "800000045","artistName": "Wren Halloway","artistUrl": "https://www.bandsintown.com/a/800000045-wren-halloway","artistMbid": "00000000-0000-0000-0000-000000000000","artistImageUrl": "https://example.com/wren-halloway.jpg","artistThumbUrl": "https://example.com/wren-halloway-thumb.jpg","artistFacebookPageUrl": "https://www.facebook.com/wrenhallowaymusic","artistTrackerCount": 15230,"artistUpcomingEventCount": 18,"artistGenre": "Indie Folk","artistBio": "Wren Halloway is a fictional touring artist used here for illustration only.","artistLocation": "Cascade Bay, Freedonia","artistLinks": [{"type": "spotify", "url": "https://open.spotify.com/artist/0000000000000000000000"}],"artistUpcomingEvents": [{"id": "500000124", "url": "https://www.bandsintown.com/e/500000124", "startsAt": "2027-09-02T19:30:00", "venueName": "Thornfield Hall", "location": "Marrow City, Freedonia"}],"artistPastEvents": [{"id": "500000099", "url": "https://www.bandsintown.com/e/500000099", "startsAt": "2025-03-11T19:00:00", "venueName": "Gullveil Theatre", "location": "Oldbridge, Freedonia"}],"venueId": "600000078","venueName": "Sable Point Arena","venueUrl": "https://www.bandsintown.com/v/600000078-sable-point-arena","venueStreetAddress": "42 Cobalt Lane","venueCity": "Rivermede","venueRegion": "Halden","venueCountry": "Freedonia","venuePostalCode": "00000","venueLocation": "Rivermede, Halden","venueLatitude": 8.6753,"venueLongitude": -34.2891,"venuePhoneNumber": "+1-555-0142","venueImageUrl": "https://example.com/sable-point-arena.jpg","venueFollowerCount": 4820,"venueIsVerified": true,"venueIsPremium": false,"venueUpcomingEvents": [{"id": "500000200", "url": "https://www.bandsintown.com/e/500000200", "startsAt": "2027-10-20T19:00:00", "title": "Vellum Kites at Sable Point Arena"}]}
Sample shape: values are illustrative placeholders, not from a live listing.
Plan Requirement
The default connection setting works out of the box, and the run automatically retries with a different connection whenever one is refused. The Residential connection group is optional: turn it on under Connection if you need broader coverage, it costs more and requires an account with residential access. If it is selected without that access, the run logs a warning and automatically continues on a backup connection instead of failing outright, though coverage may be more limited in that case. Residential use also carries an internal traffic budget; once spent, the run automatically switches back to the standard connection for the rest of the run, so cost never grows unbounded. None of this needs any extra configuration beyond the standard proxyConfiguration field above.
FAQ
How much does it cost?
You pay per event returned, plus a smaller per-event surcharge only when Fetch full details is switched on and actually returns that enriched record. The Pricing tab shows the current rates. Use Max items to cap the cost of any run.
Is it legal to scrape Bandsintown?
This actor collects only publicly available concert and event listing data. You are responsible for how you use it: follow Bandsintown's terms and the laws that apply to you, and get legal advice if you plan commercial redistribution. Show dates, venues and lineups are generally facts, but artist photos, bios and other media may be subject to third-party rights.
Can I get only new or changed shows on a schedule?
Yes. Schedule the actor from the Schedules tab and turn on Incremental mode. Later runs then return only NEW, UPDATED and REAPPEARED events (REAPPEARED only after a prior complete scan had marked something EXPIRED), and unchanged events are not billed unless you turn on Emit unchanged.
What is the difference between Resume and Incremental mode?
Resume from a previous run continues ONE specific interrupted run: paste its run or dataset ID and the actor skips every event it already collected there. Incremental mode is for running the same search or links again and again on a schedule and getting only what changed, without pasting anything. Using both together only works to bootstrap a brand-new Incremental mode state key; pointing Resume at a state key that already has saved state fails the run with a clear message instead of mixing the two silently.
Why did my run fail instead of returning an empty dataset?
If an artist name is not recognized by Bandsintown at all, or a pasted link's own page could not be read, the run stops with a clear message so "no shows found" is never confused with "nothing could be read." In URL mode, if a session capable of reading pages at all could not be established, the run also fails outright before returning anything. If only some artists or links could not be read while others succeeded, you still get what was found. If an artist's or venue's calendar page loads but every individual show page behind it is refused, the run still succeeds empty, since the calendar page itself was read successfully; its status message names how many show pages could not be read. A search for an artist Bandsintown does recognize, but who genuinely has no matching events, is a valid, empty result and succeeds normally with an explanatory status message.
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 any other app you've authorized.
🔗 More scrapers you might like
Pair this actor with these related scrapers from the same team:
| 🧩 Songkick Scraper Scrape Songkick concert and event calendars: upcoming and past dates, venues, cities... | ✈️ Pollstar Scraper Scrape Pollstar upcoming concerts and tour dates: play date, venue with full address and... |
| ✈️ Concert Archives Scraper Scrape Concert Archives concert and tour history: past and upcoming dates, venues... | 🧩 Ticketmaster Scraper Discover and scrape Ticketmaster events across the US, UK, Australia and Canada. Search... |
| 🛒 SeatGeek Scraper Scrape SeatGeek events with ticket price ranges (lowest, highest, average, median)... | 🧩 Fever Scraper Scrape Fever events by city, category, keyword or URL. Extract from-prices, venues, dates... |
💬 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 abotapi@proton.me or message Telegram @abotapi.
- ⭐ Enjoying it? A quick review on the actor page helps other users find it.