Shazam APIshazam.com ↗
Search live concerts and music events by location, date, and genre via the Shazam Events API. Returns artist, venue, time, ticket links, and local genre counts.
What is the Shazam API?
The Shazam Events API exposes 1 endpoint — search_events — that returns up to 50 live concerts and music events filtered by geographic bounding box, date range, and genre. Each response includes full event details: artist name, venue, start time, ticket links, and a local_genres breakdown showing which genres are trending in the queried area.
curl -X GET 'https://api.parse.bot/scraper/418a1282-342f-43cd-9119-6b68511de584/search_events?genre=dance-17&boundingbox=40.66869%2C-73.98454%2C0.098%2C0.15043&date_filter=today' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace shazam-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: ShazamEvents SDK — find live concerts by location and genre."""
from parse_apis.shazam_com_api import ShazamEvents, DateFilter, InvalidInput
client = ShazamEvents()
# Search today's events in Brooklyn, NY (default bounding box)
for event in client.events.search(date_filter=DateFilter.TODAY, limit=5):
print(event.artist_name, "|", event.venue_name, "|", event.start_hour)
# Filter by Dance genre in the same area
dance_event = client.events.search(
date_filter=DateFilter.TODAY,
genre="dance-17",
limit=1,
).first()
if dance_event:
print(dance_event.name, "@", dance_event.venue_name)
for link in dance_event.ticket_links:
print(f" Tickets via {link.vendor}: {link.url}")
# Search tomorrow's events in a different area (Manhattan midtown)
for event in client.events.search(
boundingbox="40.7580,-73.9855,0.05,0.05",
date_filter=DateFilter.TOMORROW,
limit=3,
):
print(event.artist_name, event.day, event.venue_address)
# Handle invalid input gracefully
try:
client.events.search(date_filter="next-month", limit=1).first()
except InvalidInput as exc:
print(f"Invalid input: {exc}")
print("exercised: events.search (today/tomorrow, genre filter, custom bbox, error handling)")
Search for live concerts and music events within a geographic bounding box. Returns up to 50 events with full details including artist, venue, time, and ticket links. Results include a local_genres summary showing genre counts in the area, useful for discovering what genre slugs to filter by. The bounding box format is center_lat,center_lng,lat_span,lng_span.
| Param | Type | Description |
|---|---|---|
| genre | string | Genre slug to filter events (e.g. 'dance-17', 'electronic-7', 'hip-hop/rap-18', 'alternative-20', 'rock-21', 'pop-14', 'r&b/soul-15', 'jazz-11', 'latino-12', 'metal-1153', 'punk-1006', 'indie-rock-1004', 'comedy-3', 'hip-hop-1073'). Format is 'genre-name-id'. Available genres vary by area and are returned in local_genres. |
| boundingbox | string | Geographic bounding box as 'center_lat,center_lng,lat_span,lng_span' (4 comma-separated numbers). Example: '40.66869,-73.98454,0.098,0.15043' covers Brooklyn, NY. |
| date_filter | string | Time range filter for events. |
{
"type": "object",
"fields": {
"genre": "string genre filter used or null",
"total": "integer count of events returned",
"events": "array of event objects with full details",
"boundingbox": "string echo of the bounding box used",
"date_filter": "string echo of the date filter used",
"local_genres": "object mapping genre IDs to name and count in the area"
},
"sample": {
"data": {
"genre": null,
"total": 50,
"events": [
{
"id": "3beabc35-af92-4893-bdf0-3fa3ca3fa795",
"day": "Sunday, July 12, 2026",
"name": "Jack White Concert",
"web_url": "https://www.shazam.com/event/3beabc35-af92-4893-bdf0-3fa3ca3fa795",
"end_time": "2026-07-13T03:00:00Z",
"timezone": "America/New_York",
"artist_id": "826980",
"genre_ids": [
"20"
],
"venue_lat": 40.69027,
"venue_lng": -73.98108,
"is_virtual": false,
"start_hour": "7:00 PM",
"start_time": "2026-07-12T23:00:00Z",
"ticket_url": "https://www.bandsintown.com/t/1038642289?ticket_id=1595948624&app_id=szm_feed&came_from=283&utm_medium=web&utm_source=szm_feed&utm_campaign=ticket",
"venue_name": "Brooklyn Paramount",
"artist_name": "Jack White",
"ticket_links": [
{
"url": "https://ticketmaster.evyy.net/...",
"vendor": "Ticketmaster"
}
],
"venue_address": "385 Flatbush Avenue Ext, 11201, Brooklyn, NY, United States",
"artist_image_url": "https://is1-ssl.mzstatic.com/image/thumb/AMCArtistImages221/v4/15/b1/5b/15b15b95-e00d-0192-09c6-22c6ac12c0a0/ami-identity-3add8bef6ae75b6ee0246e291debee65-2026-06-29T18-27-00.663Z_cropped.png/300x300bb.jpg"
}
],
"boundingbox": "40.66869,-73.98454,0.098,0.15043",
"date_filter": "today",
"local_genres": {
"17": {
"name": "Dance",
"count": 5
},
"20": {
"name": "Alternative",
"count": 7
}
}
},
"status": "success"
}
}About the Shazam API
What the API Returns
The search_events endpoint returns an array of event objects, each containing artist, venue, event time, and ticket purchasing links. Alongside the main events array, the response includes a total count, an echo of the boundingbox and date_filter inputs used, and a local_genres object that maps genre IDs to their name and occurrence count within the queried region. This last field is particularly useful for discovering which genre slugs are active in an area before filtering.
Input Parameters
Location is controlled via the boundingbox parameter, formatted as four comma-separated numbers representing center_lat,center_lng,lat_span,lng_span. For example, 40.66869,-73.98454,0.098,0.15043 targets central Brooklyn. The genre parameter accepts slugs such as rock-21, electronic-7, hip-hop/rap-18, or alternative-20 — consult the local_genres response object from an unfiltered query to enumerate valid slugs for your target area. The date_filter parameter narrows results to a specific time range, such as today or this weekend.
Coverage and Limitations
Results are bounded to a maximum of 50 events per request. There is no pagination parameter; to cover a large metro area, you can tile multiple bounding boxes. The API reflects event data from Shazam's events map, so coverage depends on what promoters and ticketing partners have listed there. Smaller markets or less-populated regions may return sparse results or an empty events array.
Official API
Shazam does offer a public API through the Apple Music / Shazam developer platform, but it focuses on song recognition and music metadata rather than live event discovery. The events map data surfaced by this Parse API is not part of that official offering.
The Shazam API is a managed, monitored endpoint for shazam.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when shazam.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official shazam.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a city-specific gig guide by querying the
search_eventsendpoint with a tight bounding box around a downtown area. - Filter local shows by genre slug (e.g.
electronic-7) to surface relevant events for niche music communities. - Use the
local_genresresponse object to rank genres by event count in a metro area for market research. - Aggregate ticket links from event results to feed a price-comparison or affiliate ticketing tool.
- Detect touring patterns by running daily
search_eventsqueries across multiple cities and tracking artist appearances. - Populate a venue calendar by grouping returned events by venue name and date.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Shazam have an official developer API?+
What does the `local_genres` field in the response actually contain?+
'rock-21'), where each value includes the genre name and the count of events matching that genre within the queried bounding box. Running an unfiltered query first and inspecting this object is the most reliable way to find valid genre slugs for a given region.Does the API return more than 50 events per request?+
search_events returns a maximum of 50 events per call and does not expose a pagination or offset parameter. To cover a large region with more events, you can tile adjacent bounding boxes and merge results. You can fork this API on Parse and revise it to add offset or tiling logic.Does the API return artist social links, setlists, or streaming track data for events?+
How fresh is the event data, and are past events included?+
date_filter parameter controls the time window (e.g. today or upcoming ranges), so you can scope queries to future events. Historical or already-completed events are not a guaranteed part of the dataset — coverage reflects what is currently listed on Shazam's events map.