# Bandsintown Scraper (`hoholabs/bandsintown-scraper`) Actor

Fetch artist info and upcoming concert events from Bandsintown. Search by artist name or Bandsintown artist ID.

- **URL**: https://apify.com/hoholabs/bandsintown-scraper.md
- **Developed by:** [Hoho](https://apify.com/hoholabs) (community)
- **Categories:** Other, Travel
- **Features:** Limited permissions
- **Stats:** 60 total users, 12 monthly users, 98.5% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Bandsintown Scraper

No API key. No account. Type an artist name — get their upcoming concerts anywhere in the world.

Fetches artist profiles and event data from the [Bandsintown](https://www.bandsintown.com) REST API: tour dates, venues, locations, ticket links, and lineup in clean JSON.

### Why this scraper?

- **No Bandsintown account or API key required**
- **Search by name or ID** — use the artist's name for convenience, or their Bandsintown ID to skip lookup entirely
- **Flexible date filtering** — upcoming shows, past shows, all shows, or a specific date range
- **Three query modes** — artist profile only, events only, or both in one run

### What you can fetch

- **Artist profile** — name, image, tracker count, upcoming event count, social links
- **Upcoming events** — full tour schedule with dates, venues, cities, and ticket links
- **Past events** — historical show data
- **Date range** — events within a specific window (e.g. `2026-06-01,2026-08-31`)

### Usage

Provide either an `artist` name or an `artistId`. Choose what to fetch with `queryType`.

#### Get upcoming events for an artist

```json
{ "artist": "Radiohead" }
```

#### Get artist profile + events

```json
{ "artist": "Metallica", "queryType": "both" }
```

#### Get past events

```json
{ "artist": "LCD Soundsystem", "queryType": "events", "date": "past" }
```

#### Get events in a date range

```json
{ "artist": "Phish", "queryType": "events", "date": "2026-06-01,2026-09-01" }
```

#### Use an artist ID to skip name lookup

```json
{ "artistId": "25874", "queryType": "events" }
```

### Input fields

| Field | Type | Description |
|---|---|---|
| `artist` | string | Artist name (e.g. `Radiohead`, `The National`) |
| `artistId` | string | Bandsintown numeric artist ID — skips name lookup |
| `queryType` | select | `events` (default), `artist`, or `both` |
| `date` | string | `upcoming` (default), `past`, `all`, or `YYYY-MM-DD,YYYY-MM-DD` |
| `limit` | integer | Max results: stop after this many rows. `0` (default) returns everything. In `both` mode the artist row counts as one. |

### Output

Each run pushes one or more items to the dataset. Items have a `type` field indicating what they are.

#### Artist item (`type: "artist"`)

| Field | Description |
|---|---|
| `type` | Always `"artist"` |
| `name` | Artist name |
| `url` | Bandsintown artist page URL |
| `image_url` | Full artist image |
| `thumb_url` | Thumbnail image |
| `facebook_page_url` | Facebook page if available |
| `mbid` | MusicBrainz ID |
| `tracker_count` | Number of Bandsintown followers |
| `upcoming_event_count` | Number of upcoming events |

#### Event item (`type: "event"`)

| Field | Description |
|---|---|
| `type` | Always `"event"` |
| `id` | Bandsintown event ID |
| `url` | Event page URL |
| `datetime` | Event date and time (ISO 8601) |
| `description` | Event description if available |
| `venue.name` | Venue name |
| `venue.city` | City |
| `venue.region` | State / region |
| `venue.country` | Country |
| `venue.latitude` | Latitude |
| `venue.longitude` | Longitude |
| `lineup` | Array of artist names on the bill |
| `offers` | Array of ticket offers with `type`, `url`, and `status` |
| `on_sale_datetime` | When tickets go on sale (if available) |

### Use cases

- **Tour tracking** — monitor when artists announce new dates
- **Concert discovery apps** — build artist or location-based event feeds
- **Calendar integrations** — sync shows to Google Calendar, Notion, or Airtable
- **Ticket monitoring** — watch for on-sale dates and availability changes
- **Analytics** — analyze touring patterns, venue popularity, regional event density

***

This scraper is not affiliated with Bandsintown. Please use responsibly and in accordance with Bandsintown's terms of service.

# Actor input Schema

## `queryType` (type: `string`):

What to fetch: artist info, artist events, artist info + events.

## `artist` (type: `string`):

Artist name to look up (e.g. Metallica).

## `artistId` (type: `string`):

Bandsintown numeric artist ID. Use this to bypass name lookup.

## `date` (type: `string`):

Filter events by date: 'upcoming' (default), 'past', 'all', or a range like '2026-01-01,2026-12-31'.

## `limit` (type: `integer`):

Stop after this many results. Leave at 0 to get all results.

## Actor input object example

```json
{
  "queryType": "events",
  "artist": "Metallica",
  "date": "upcoming",
  "limit": 0
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "artist": "Metallica"
};

// Run the Actor and wait for it to finish
const run = await client.actor("hoholabs/bandsintown-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "artist": "Metallica" }

# Run the Actor and wait for it to finish
run = client.actor("hoholabs/bandsintown-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "artist": "Metallica"
}' |
apify call hoholabs/bandsintown-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,hoholabs/bandsintown-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/Q1y82tC0tCSql6WY8/builds/fSaWetz4NtW0JvwBf/openapi.json
