Frequently asked questions
Answers about the API, MCP, plans, and your account.
For AI tools: every answer is also in one markdown file at /faq.md. Point your assistant or coding agent there.
Start building with your AI tool
Get from zero to a working integration with Claude Code, Codex, Cursor, Lovable, Replit and similar tools. (6 questions)
Give your agent our build guide instead of letting it guess. Paste something like:
Read https://data.jambase.com/agents.md and https://data.jambase.com/llms.txt. Add a JamBase Data client to this project that reads the key from the JBD_API_KEY environment variable, calls https://api.data.jambase.com/v3 with an Authorization: Bearer header, and prints five upcoming events. Then add a paginated sync that uses dateModifiedFrom.This works in Claude Code, Codex, Cursor, Antigravity, Lovable, Replit and similar tools. The guide covers auth, pagination, backoff, delta sync and deletions, so the agent writes the same correct pattern every time.
Use the REST API when JamBase data goes into something you build: an app, a website, a sync job or a warehouse. Use MCP when you want to ask questions about live music inside Claude, ChatGPT, Cursor or another assistant without writing code. Many teams use both: MCP to explore and prototype, REST for the production integration.
Point your tool at https://data.jambase.com/llms.txt (short reference), /llms-full.txt (long reference), /agents.md (step-by-step build guide) and /openapi.json (every endpoint and parameter). If your agent invents a parameter or an endpoint, ask it to check the OpenAPI spec before writing more code.
Store it as a secret named JBD_API_KEY and call JamBase from server-side code (a backend route, server function or scheduled job). Never put the key in browser or mobile app code, where anyone can copy it. Your front end calls your own backend, and your backend calls JamBase.
To evaluate, start a Trial: 14 days, 1,000 calls, all features, no credit card. To use JamBase only inside an AI assistant such as Claude or ChatGPT, connect it through MCP: the free MCP plan includes 500 calls a month, with no API key or card. For a personal or non-commercial project, use Developer: free, 1,000 calls a month, then $0.05 per call. When JamBase data powers a commercial product, move to Startup or higher. The pricing page compares quotas, history windows and features.
Start a Trial and run the queries you actually need: your cities, your artists, your date ranges. The request builder lets you try calls in the browser, and you can ask Claude or ChatGPT through MCP to check coverage without writing code. If something you expected is missing, tell us what you searched for; coverage gaps are useful to us.
Keys, accounts & teams
API keys, sign-in, teammates, and changing or closing your account. (8 questions)
Those errors come from the legacy v1 API, which does not accept jbd_ keys. This usually happens when a coding agent writes code from older examples. Use the v3 base URL https://api.data.jambase.com/v3 and send the key as Authorization: Bearer jbd_...; v3 does not accept an apikey query parameter. If the URL and header are right and you still get a 401, check Account > API keys: the key may be revoked, or your trial may have ended.
Go to Account > API keys. You can create more than one key (for example, one per environment) and revoke a key you think has leaked. Every key on your account shares the same quota and rate limits, so extra keys don't add capacity.
Go to Account > Team and send an invite. Team seats come with paid plans (Startup 5, Pro 25, Pro+ 100 seats; Enterprise is unlimited). Trial and Developer accounts are single-seat, so the invite option isn't available there. Teammates share the account's keys, quota and rate limits.
Use Forgot password? on the sign-in page to get a reset link. You can also skip the password and sign in with a one-time code or magic link sent to your email. If you originally signed up with Google or GitHub, use that button instead. If the reset fails, contact support from the same email address and we'll sort it out.
Contact support from your current email address and tell us the new one. We'll confirm the change with you before making it. If you're about to lose access to the old address, ask before it stops working.
Use Cancel subscription on your account page. Startup on monthly billing is the only month-to-month plan. Cancel it any time and access continues to the end of the period you've paid for. Startup annual, and Pro and Pro+ on monthly or annual billing, are 12-month terms; on Pro and Pro+, monthly billing is 12 monthly payments, not a shorter contract. These plans show Set non-renewal instead, which stops the next term from starting; installments in the current term are still due. The Developer plan has no subscription fee, but calls above the included quota are billed, so revoke any keys you no longer use.
Cancel any paid subscription first, then ask support to delete the account from the email address on it. We'll revoke your keys, close the account and confirm when it's done, including whether anything from the current billing period is still owed.
Contact support with both email addresses. We can move people onto the company account so keys, usage and billing sit in one place, and then close the personal account if you no longer need it. Keys always follow the account they were created on, so update JBD_API_KEY in your apps after the move.
Usage, quotas & billing
What counts as a call, how to track usage from code, and how overage and billing work. (9 questions)
Call GET /v3/quota with your key. It returns your quota, calls used, calls remaining, overage calls and the billing period dates. Calls to /v3/quota don't count toward your quota and have their own small rate limit. The RateLimit headers on other responses describe short hourly and per-minute windows, not your monthly usage. You can also see usage over time on the Usage page.
Every request is one call, and each page of results is one request. A nightly job that re-downloads every event for a region from page 1 can easily use hundreds of calls, and one detail request per event multiplies that. To cut usage: seed once, then fetch only changes with dateModifiedFrom; use perPage=100; don't fetch details you already have from the list response; and remember every key and teammate on the account shares the same counter.
One successful (2xx) request to a v3 endpoint. Errors, including 429s, don't count. List and detail requests count the same, and response size doesn't matter. One MCP tool call counts as one call against the same account quota as your REST requests.
It depends on the plan. Trial stops at its 1,000 calls, and the free MCP plan stops at 500 calls a month. If your assistant hits the MCP limit, wait for the monthly reset or move the same account to Developer (1,000 calls a month, then $0.05 per call) or a paid plan from the pricing page. Self-serve Developer and paid plans keep working and bill each extra call: Developer $0.05, Startup $0.04, Pro $0.03, Pro+ $0.02. If overage builds up mid-month (Developer $150, Startup $750, Pro $2,500, Pro+ $2,500), we invoice it early instead of waiting for month-end. Enterprise and other contract accounts follow their agreement, which sets any overage and whether requests stop at the quota.
There's no monthly fee, and 1,000 calls a month are included. Calls above that are billed at $0.05 each, so a runaway loop can cost money. Check usage with GET /v3/quota and put a cap in your own code if you want a hard stop.
Trial quotas are fixed. On self-serve Developer and paid plans, calls above the quota are billed as overage rather than blocked; contract accounts follow their agreement. If you regularly go over, a plan with more included calls is usually cheaper (Startup 20,000, Pro 50,000, Pro+ 150,000 a month). For custom volume, talk to us about Enterprise.
Annual billing on Startup, Pro and Pro+ gives you 2 months free compared with 12 monthly payments. Overage rates are the same on both. Developer has no annual option. Annual billing is always a 12-month term; for how terms work on monthly billing, see "How do I cancel my subscription?"
Yes. Upgrades take effect immediately and the new base price is prorated. Startup on monthly billing is the only month-to-month plan. A downgrade from it takes effect at the end of the current billing period, so you keep the higher limits you've paid for. Startup annual, and Pro and Pro+ on monthly or annual billing, are 12-month terms, so a downgrade from them takes effect at renewal, and installments in the current term are still due.
The trial stops after 14 days or 1,000 calls, whichever comes first. Pick Developer or a paid plan to keep going. Trial keys start with jbd_trial_; once you're on a new plan, use the live key shown under Account > API keys and update JBD_API_KEY wherever your code runs.
Data & coverage
What's in the data, how far back and forward it goes, and how to search it. (11 questions)
From official sources, mainly ticketing platforms, along with artists, venues, fans and our editorial team. We match every record to a universal JamBase ID, so you get many sources in one normalized feed. The full list of providers is on our data sources page.
Usually for one of two reasons: our official source providers don't have the listing yet, or the artist or venue isn't matched in our system, so the show can't attach to the right record. Anyone can add a show, band, venue or festival at jambase.com/add. To fix something that's wrong, use the corrections form at jambase.com/contact/corrections. Changes reach the API, MCP and jambase.com together.
Concerts, festivals, artists, venues and livestreams: 616,000+ artists, 91,000+ venues, 5M+ performances, 2.8M+ shows and 20,000+ festivals, with 25+ years of historical data. We reconcile 60+ sources under a universal JamBase ID, so you get many sources in one normalized feed. Which fields and how much history you can use depend on your plan.
Upcoming events: every plan sees all published dates except Developer on the REST API, which sees about 6 months ahead. Past events on the REST API: Developer and Startup have none; Trial gets a rolling 1 year; Pro gets a rolling 3 years on artist and venue lookups; Pro+ gets the full archive on artist and venue lookups. Over MCP, Developer and the free MCP plan get a rolling 1 year on artist and venue lookups, and Startup gets a rolling 2 years. Searching past events by place is an Enterprise feature, available on other plans by request.
Add name= to /v3/events, for example /v3/events?name=Bonnaroo. You can combine it with artistName=, venueName= and location or date filters to narrow results. It's keyword matching, not exact matching. Once you've found the right artist or venue, store its jambase: ID and query by ID from then on.
genreSlug matches on the genres attached to an event's performers. If a performer has no genre tags yet, that event won't match any genre. For complete results in a small area and date range, query without genreSlug and filter in your own code. GET /v3/genres lists the valid slugs.
Yes, on every plan. Call /v3/{family}/id/{source}:{id}, for example /v3/artists/id/spotify:<artist id>, and you get the JamBase record back without a name search. Getting third-party IDs returned inside responses is a separate feature, included on Startup and higher and on Trial.
Send us the JamBase artist page URL and the matching Spotify artist URL from the Support page. We'll add the mapping. Until then, a Spotify ID lookup for that artist returns no result, so look them up by name or JamBase ID instead.
Image URLs point to JamBase's own media servers, which use bot protection. Requests from servers, scripts and headless browsers can be blocked, while a user's browser loading the image directly in an img tag normally works. If your server needs to fetch images to cache them and those requests are blocked, or images fail in a normal browser, send us an example URL and where it fails, and we'll help. For what you may do with the images themselves, see "Can I use the images the API returns?"
For one-off lists, connect JamBase to Claude or ChatGPT through MCP and ask for the shows you need as a table, then ask the assistant for a CSV file you can open in Excel or Google Sheets. For a list you refresh regularly, ask a coding agent to write a short script that calls the API and saves a CSV. For large or scheduled exports, contact us about bulk data feeds.
Look up the place once with /v3/geographies/cities or /v3/geographies/metros, store its jambase: ID, and pass it to /v3/events as geoCityId or geoMetroId. You can also search by country, state, or latitude and longitude with a radius. For city type-ahead, send geoCountryIso2 and wait for at least three characters; short prefixes are slow.
Syncing & building
Keeping a local copy current: pagination, delta sync, deletions, and 429s. (6 questions)
Seed once by paging /v3/events with perPage=100. After that, run a delta: note the time at the start of the run, request dateModifiedFrom={last checkpoint minus 5 minutes}, upsert every row by identifier, and save the new checkpoint only after every page succeeds. Hourly suits fan-facing apps; once or twice a day suits most analytics.
A dateModifiedFrom query is live: changes keep arriving while you page, so totals can grow and a row can appear on two pages. That's expected; upserting by identifier makes it harmless. Deletion records come after the live rows, so keep paging until pagination.totalPages. If later pages come back empty while totalPages says there are more, don't advance your checkpoint; run again from the old checkpoint, and send us the request URL (without your key) if it keeps happening.
A cancelled show stays in the feed with eventStatus "cancelled", so update it rather than deleting it. Removals arrive in the same delta as small rows with deletionStatus: delete "deleted" and "trashed" rows, and repoint "merged" rows to mergedInto.
A plain dateModifiedFrom delta covers upcoming and ongoing events only, on every plan. Past events need a separate historical request, and only plans with past-event access get them. See the historical data guide for the request shapes your plan supports.
Check the type before retrying. rate-limit-exceeded and origin_admission_limited are temporary: wait for the Retry-After header, then retry, and reduce parallel requests. quota-exceeded means a Trial or MCP plan has used its quota and retrying won't help. Page sequentially rather than in parallel; a sync loop is fast enough that way.
A 401 means the key is missing, malformed or revoked. A 403 means the key works but your plan doesn't include what you asked for, such as past events or third-party IDs in responses. A 403 with type quota-hard-cap means the account has a hard monthly cap and has reached it: don't retry, and contact your account manager. Show these as different errors in your app so nobody chases a key problem that's really a plan limit.
Attribution & licensing
How to credit JamBase, what the Developer plan covers, storing data, and using images. (5 questions)
Yes, on every plan, whenever people see JamBase data in your product. There are two parts. Show a visible credit that reads "Powered by JamBase" or "Concert data by JamBase", linked to jambase.com, near the data or in your footer. And when you list events, link each one to its ticket link exactly as the API returns it, or to the JamBase event page when there isn't one. Internal-only use, such as staff analytics, needs no credit. Only an Enterprise Order Form or SOW can waive the credit (white-label). Subscriptions that started before October 20, 2026 keep their earlier attribution terms while they stay on the same plan and billing cadence.
Put one credit on the screen near the JamBase content, for example in the header, beside the grid title or in a caption under it. You don't need a credit on every tile. A plain-text link works where a logo won't fit. If your layout truly has no room, send us a screenshot and we'll suggest a placement.
Developer covers personal projects, prototypes, evaluation, research and hobby apps with no revenue model. If the app earns money (ads, subscriptions, paid features, affiliate income), redistributes the data, or powers a commercial product, use Startup or higher. The Developer terms are the deciding text; if you're unsure, describe your app to us and we'll confirm in writing.
Yes. On Developer and on commercial plans (Startup and above) you may keep a synced local copy of the data your plan includes for as long as your account or subscription is active, as long as you keep it current by applying updates and removals from the API. The copy can include image URLs and cached image files; refresh cached images when their URL changes and delete them when the image is removed. When the agreement ends, delete it within 30 days.
Yes, to illustrate the JamBase data they belong to. Most images are press photos and logos owned by artists, venues, festivals or photographers, and JamBase grants no rights in them. Show each image next to its event, artist, venue or festival, and follow the attribution rules. You can load images from the URL the API returns or cache copies on your own server or CDN. JamBase is not an image CDN, so caching is recommended for production traffic. Refresh cached copies with your data sync: fetch the new image when an image URL changes, and delete copies when an image is removed or a rights holder objects. Show a placeholder when an image fails to load.
MCP & AI assistants
Using JamBase inside Claude, ChatGPT, Cursor and other assistants. (4 questions)
In Claude and ChatGPT, add JamBase from the connectors or apps directory. In Cursor, Gemini CLI, Replit and other MCP clients, add the server URL https://mcp.jambase.com/mcp; the Connect an assistant page has copy-paste setup for each. On first use you sign in with your JamBase account. There's no key to paste.
Ask the way you would ask a friend who knows live music: "Who is playing Red Rocks in June?", "When is this band next near Chicago?", "What festivals are in Texas this spring?" or "What shows has this venue hosted recently?" Past shows for an artist or venue are limited to your account's history window.
Short lists work best. Narrow the place and dates first, then ask about 10 to 20 artists at a time; one very large request tends to return noisy results. If you need to match hundreds of artists regularly, that's a job for a small script against the REST API, which your coding agent can write.
Use the feedback link under the answer to tell us what you asked and what you expected; it reaches us with the details we need to look into it. If a results card won't display, the data usually still comes back as text, and removing and re-adding the connector often fixes it.
Getting help
How to reach us, report a data problem, or ask for a feature. (5 questions)
Signed in, open Support from your account. Our assistant answers common questions right away, and you can ask for a person; outside staffed hours your message becomes a ticket and we reply there. Include the request URL (never your key), the response you got and roughly when it happened. You can also reach us through the contact page.
To add a show, band, venue or festival we don't have, use jambase.com/add. To fix wrong details, use the corrections form at jambase.com/contact/corrections and include the JamBase page URL and a source link if you have one. We fix the record at the source, so the correction reaches the API, MCP and jambase.com together.
Tell us from the Support page what you're building and what's missing. Requests with a concrete use case are the easiest for us to prioritize.
Claim your profile at jambase.com/manager. Once it's verified, you can add and edit your own dates, and they flow into JamBase Data automatically.
Tell us about your company and what you have in mind on our contact page, and the right person will follow up.
Still stuck?
Send us a message and we'll get back to you by email.