DICE APIdice.fm ↗
Access DICE.fm event listings by city, genre, and date. Get venue, pricing, lineup, and scheduling data for concerts and parties via 2 REST endpoints.
What is the DICE API?
The DICE.fm API exposes 2 endpoints for querying live event listings on dice.fm, covering concerts, parties, and music events across cities worldwide. The browse_events endpoint returns paginated event lists filtered by city slug, category, genre, and date range, while get_event_details returns full event records including lineup, promoter info, age restrictions, and markdown-formatted descriptions.
curl -X GET 'https://api.parse.bot/scraper/9d08efd6-b294-4b5f-91a1-7c51ded9f7f9/browse_events?city=new_york-5bbf4db0f06331478e9b2c59&genre=afro_house&limit=10&category=music%2Fparty&date_from=2026-08-27&date_until=2026-09-03' \ -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 dice-fm-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: DICE Events SDK — browse events by city, filter by category and date."""
from parse_apis.dice_fm_api import Dice, Category, EventNotFound
client = Dice()
# Browse upcoming parties in New York for the next week
ny = client.city(id="new_york-5bbf4db0f06331478e9b2c59")
for event in ny.browse(category=Category.MUSIC_PARTY, date_from="2026-07-12", date_until="2026-07-19", limit=5):
print(event.name, "|", event.venue_name, "|", event.event_start_date)
# Drill into one event for full details (description, lineup, age restriction)
first = ny.browse(category=Category.MUSIC_DJ, limit=1).first()
if first:
detail = first.details()
print(detail.name, detail.venue_address, detail.price_amount, detail.age_restriction)
# Handle not-found errors for invalid slugs
try:
bad = client.city(id="new_york-5bbf4db0f06331478e9b2c59").browse(limit=1).first()
if bad:
bad_detail = bad.details()
except EventNotFound as exc:
print(f"Event gone: {exc.event_slug}")
print("exercised: city.browse / event_summary.details / EventNotFound catch")
Browse upcoming events on DICE filtered by city, event category, genre, and date range. Returns a list of events with venue, pricing, and scheduling details. Results are from the city's browse page, ordered chronologically. When a date range spans many events, the response indicates whether more results exist beyond the returned set.
| Param | Type | Description |
|---|---|---|
| city | string | City slug in the format '{perm_name}-{city_id}', e.g. 'new_york-5bbf4db0f06331478e9b2c59', 'london-5b22e2c8fc4800000182c2e7', 'paris-5b23e8a0e63cc224a4c36a2d'. Found in dice.fm browse page URLs. |
| genre | string | Sub-genre filter appended to the category path. Examples for music/party: 'afro_house', 'disco', 'funk', 'house', 'karaoke', 'latin', 'pop', 'reggaeton', 'tech-house'. Available genres vary by category and city. |
| limit | integer | Maximum number of events to return. |
| category | string | Event category path. |
| date_from | string | Start date filter in ISO format YYYY-MM-DD. Omit for no start date constraint. |
| date_until | string | End date filter in ISO format YYYY-MM-DD. Omit for no end date constraint. |
{
"type": "object",
"fields": {
"city": "object with name, id, country_code",
"events": "array of event objects with id, name, venue, price, dates, tags",
"has_more": "boolean indicating if more events exist beyond this page",
"total_returned": "integer"
},
"sample": {
"data": {
"city": {
"id": "5bbf4db0f06331478e9b2c59",
"name": "New York",
"country_code": "US"
},
"events": [
{
"id": "6a02ae12faa95d0001d2944d",
"url": "https://dice.fm/event/2wywg7-azure-day-party-july-12th-12th-jul-rooftop-at-arlo-williamsburg-new-york-city-tickets",
"name": "Azure Day Party July 12th",
"tags": [
"Party"
],
"status": "on-sale",
"timezone": "America/New_York",
"date_unix": 1783882800,
"perm_name": "2wywg7-azure-day-party-july-12th-12th-jul-rooftop-at-arlo-williamsburg-new-york-city-tickets",
"properties": [
"selling_fast"
],
"venue_name": "Rooftop at Arlo Williamsburg",
"image_square": "https://dice-media.imgix.net/attachments/2026-05-12/890de510-544c-415c-9fda-01ebb7b58e50.jpg?rect=0%2C0%2C1254%2C1254",
"presented_by": "Presented by Azure Day Party.",
"price_amount": 75,
"venue_address": "123 Main St, Springfield, IL 62704",
"event_end_date": "2026-07-12T22:00:00-04:00",
"price_currency": "USD",
"event_start_date": "2026-07-12T15:00:00-04:00"
}
],
"has_more": false,
"total_returned": 10
},
"status": "success"
}
}About the DICE API
Browsing Events
The browse_events endpoint accepts a city parameter formatted as {perm_name}-{city_id} (e.g. new_york-5bbf4db0f06331478e9b2c59), alongside category, genre, date_from, date_until, and limit. Results are ordered chronologically and each event object carries an id, name, venue, price, dates, and tags array. The has_more boolean and total_returned integer tell you whether additional pages of results exist. Genre filters like afro_house, disco, or house apply within a category path such as music/party.
Event Detail
The get_event_details endpoint takes an event_slug — the perm_name field from browse results or the slug in any dice.fm event URL — and returns the full event record. Fields include lineup (with a top_artists array and total_artists count), images (square, landscape, and portrait URLs), promoter name and ID, status, venue_name, tags, and a description in markdown format. This is the endpoint to use when you need artist lineup depth or the full event write-up.
Coverage and Filters
City coverage follows what DICE lists on its browse pages; the city ID is a fixed identifier tied to DICE's own city taxonomy, not a freeform string. Category paths mirror the DICE browse hierarchy (e.g. music/party, music/live). Genre sub-filters are only valid under a compatible parent category — passing an unsupported genre for a category returns no results rather than an error. Date filters use ISO YYYY-MM-DD format and can be used independently (open-ended start or end ranges are supported by omitting one of the two parameters).
The DICE API is a managed, monitored endpoint for dice.fm — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when dice.fm 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 dice.fm 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?+
- Aggregate weekend party and concert listings for a city-specific event discovery app using
browse_eventswithdate_fromanddate_until - Build a genre-focused event feed (e.g. house or disco nights) by combining the
genreandcategoryfilters inbrowse_events - Populate artist profile pages with upcoming live dates by querying
get_event_detailsfor thelineup.top_artistsarray - Monitor event status changes (on-sale, sold out) by polling
get_event_detailsfor thestatusfield - Pull promoter event histories by filtering
browse_eventsresults and cross-referencing thepromoterobject fromget_event_details - Sync DICE venue and pricing data into a ticketing comparison tool using the
venueandpricefields frombrowse_events - Generate social preview cards for events using the
imagesobject (square, landscape, portrait URLs) fromget_event_details
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does DICE have an official public developer API?+
What does `browse_events` return for each event, and how granular is the pricing data?+
browse_events response includes id, name, venue, price, dates, and tags. Pricing is returned at the event level as it appears on the browse listing. For tier-level ticket breakdowns or sold-out status per tier, use get_event_details which returns richer scheduling and status fields.Does the API cover events outside the music category, such as comedy or film?+
category parameter handling to target other DICE category paths.Is pagination supported in `browse_events`, and how do I fetch the next page?+
has_more boolean indicating additional results exist beyond the current page, and a total_returned integer. The current API does not expose an explicit offset or cursor parameter for fetching subsequent pages. You can fork this API on Parse and revise it to add a pagination or offset input.Does the API return past events or only upcoming ones?+
browse_events endpoint reflects upcoming event listings as they appear on DICE's browse pages. Historical or past event data is not exposed by the current endpoints. You can fork this API on Parse and revise it to add a past-events endpoint if the underlying source exposes that data.