The musical instrument marketplace as JSON, priced in one currency
The Reverb API turns reverb.com, the global marketplace for new, used and vintage musical instruments, into clean JSON in ten actions.
10 active endpoints, on 0, 1, 2 and 3 credit tiers.
- POST/reverb/v1/search
- POST/reverb/v1/listing
- POST/reverb/v1/shop
- POST/reverb/v1/shop/listings
- POST/reverb/v1/models
- POST/reverb/v1/model/detail
- POST/reverb/v1/model/listings
- +3 more
What Reverb endpoints does ReefAPI ship?
10 live read endpoints. Read-only data API: no writes, no account actions, no dashboard access on the target site.
Reverb API
4 of 10 endpoints, ready to run
Live Reverb listings for a keyword and any combination of filters: listing_id, title, make, model, year, finish, condition, price_usd with price_display, the seller's listing_currency, the category path, shop_name and shop_slug, inventory, the shipping rate to every region, the image and the description as plain text.
// Press "Try it" and this pane shows exactly what the // live site returned this second — including an empty // result, if that is the truth. No key, no account.
How the Reverb API works
Reverb is a normal ReefAPI surface — the same four rules that hold for every other engine on the key.
No OAuth app, no request signing, no per-site account. One key covers all 280 engines.
Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.
Credits, not seats. Failed and blocked calls are never charged, and cache hits cost nothing.
One envelope everywhere. meta carries latency_ms, record_count and the endpoint that answered.
Track the used floor for a whole catalogue of instrument models
Reverb publishes no sold prices, so a gear price series has to be built from the live market. Three calls give you a floor per model per day, and the asks behind it on the days the floor moves.
{"query": "les paul", "make": "Gibson"}799 model rows of the 1,387 that match, each with model_id, title, brand, new_low_price_usd, used_low_price_usd and the live count of each. Store model_id once; it is what the other two calls take.
{"model_id": "126164"}One small call per model per day: 1,239.99 new across 338 listings, 875.00 used across 236, plus Reverb's own rating and review count for the model. That is the row a daily series stores.
{"model_id": "126164", "condition": ["used"]}The asks behind the floor, each with its condition grade, year, finish, seller and shipping rate - for the days the floor moves and you want to know which listing moved it.
{"query": "gibson les paul", "year_min": 1958, "year_max": 1960, "sort": "price_desc"}And for the vintage end, where no model page exists: the open market for a make, model and year range, with the condition grade and the seller's country on every row.
A daily new and used floor per model, the live listing count beside each one, and the individual asks to explain any move - built entirely from what the marketplace publishes.
curl -X POST https://api.reefapi.com/reverb/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{}'{
"ok": true,
"data": { … },
"meta": {
"api": "reverb",
"endpoint": "search",
"mode": "live",
"latency_ms": …,
"record_count": …
},
"error": null
}Which Reverb number is which
Reverb prints several prices and several counts on the same listing, and two of them mean something different from what the name suggests. Measured on 2026-09-23.
| Field | What it is | Measured example |
|---|---|---|
| price_usd | The asking price, always in US dollars whatever currency the seller listed in | 4304.13 on a listing whose listing_currency is EUR |
| listing_currency | The seller's own currency. It does not change price_usd | EUR, JPY, GBP, AUD all seen on the same result page |
| new_low_price_usd / used_low_price_usd | The cheapest live listing of that model right now, new and used. An ask, never a completed sale | Fender American Professional II Stratocaster: 1239.99 new, 875.00 used |
| new_listings / used_listings | How many of each are for sale at that moment | 338 new and 236 used on the same model |
| free_expedited_shipping | Reverb's own flag for free expedited shipping | false on all 8 rows returned by the free-shipping filter |
| has_free_shipping | Computed here: at least one shipping rate is 0.00 | true on those same 8 rows, free to US_CON or to DE |
| ships_to | The shipping region the result was answered for | Everywhere Else by default; ships_to US cut 77,009 results to 41,497 |
total_pages in the response is computed from total, not copied from the marketplace, which prints 50 on every result no matter how large it is. Paging past 50 works: page 120 of a 790,000-result search returned real, distinct rows.
What Reverb publishes, what it does not, and what a price on it means
One global marketplace, every price in US dollars. The lines below describe the engine's measured surface as of 2026-09-23: 67 of 67 controlled cases across 127 live calls, every filter checked row by row against the unfiltered result of the same run, and field completeness measured across 500 listings in 10 departments. Five of them go against us, starting with the one a price tracker has to know first.
Reverb does not publish completed sales to visitors, so this API returns the live market and nothing else. It does not fake a sold filter either: the marketplace accepts one, returns the identical result count and hands back live listings anyway, which is exactly the kind of silently-wrong answer this API exists to avoid. The nearest real price signal is the model page's lowest new and lowest used ask, and it is labelled as an ask.
price_usd is a number and price_display is the string the marketplace prints; listing_currency reports the seller's own currency separately. A listing at 4,304.13 dollars priced by its seller in euros comes back exactly that way. Nothing is converted by us, so no exchange rate of ours sits between you and the asking price.
On a 77,009-result stratocaster search: a 1000-2000 dollar band left 8,397, Mint 2,501, Mint or Excellent 12,419, 1960-1969 left 770, sellers in the UK 5,052, ships-to-US 41,497, free shipping 416, local pickup 26,255, preferred sellers 48,927, the Electric Guitars department 29,589 and the Solid Body category 25,071. Every one was checked row by row, not just by its total. Filters the marketplace accepts and then ignores are not offered at all.
model/listings resolves the listings that really are one model - 575 for the Fender American Professional II Stratocaster - where a keyword search for the same words matches tens of thousands. Two of twenty rows on a measured page abbreviate the name to American Pro II and never say Stratocaster, and they still come back.
condition and condition_slug are filled on 500 of 500 measured listings, using Reverb's own ten grades from Brand New and B-Stock through Mint, Excellent, Very Good, Good, Fair, Poor and Non Functioning. conditions returns the enum with the marketplace's definition of each grade. An unknown grade is refused rather than silently ignored, because the marketplace would ignore it and return everything.
Across 500 listings in 10 departments, year was filled on 51 percent and finish on 40 percent, and both are category-bound: year 38 of 50 on electric guitars but 7 of 50 on drums, finish 32 of 50 on electric guitars but 4 of 50 on basses. make, model, condition, price, the category path, the shop and the publish date were 100 percent, and the image 96 percent. A year filter also drops every listing whose seller left the year blank.
The marketplace sorts by the seller's own currency and converts for display, so a JPY listing converting to 98,652 dollars came ahead of a US listing at 100,000 on a descending page. Only the three orders the marketplace really applies are offered - cheapest, dearest and newest - and this API will not re-order a page in memory and call it a market ranking. Sort on price_usd yourself when exact order matters.
There is no route to fetch several listings in one call, so listing detail is one call per item; the marketplace ignores a list of ids and returns its whole catalogue instead. There is no index of brands either, only a lookup by slug, and no shop search - find sellers through search rows, which carry shop_slug and shop_id.
With no ships_to the marketplace answers for its Everywhere Else region. Pinning ships_to US cut a 77,009-result search to 41,497. Every response echoes the region actually used in ships_to, so the number is never silent, but a caller comparing two searches should pin it.
Fifty rows a page is the marketplace's own ceiling and a larger request is clamped, with limit reporting what was used. Depth is not capped at the 50 pages the marketplace prints on every result: page 120 of a 790,000-result search returned real, distinct rows, and total_pages in the response is computed from total so it is the number you can rely on.
shop returns a full seller record - name, city and country, Preferred Seller, quick shipper and quick responder badges, feedback count, policies, vacation status - and shop/listings returns their inventory. One measured shop returns a complete record and zero live listings. That is an empty seller, not an error, and the response says so rather than failing.
What people build with Reverb
The jobs this data is most often used for.
endpoints
credits per call
Gear price trackers store a daily new and used floor per instrument model from models and model/detail, with the live listing count beside each one.
Dealer repricing tools read a competitor's whole inventory with shop/listings and compare it against the market for the same models.
Vintage-instrument valuation and insurance pull year, finish, condition grade and the current asking spread for a make and model across a year range.
Marketplace analytics measure supply and price by department, brand, condition and seller country using filters that were each proven to bite.
What Reverb data costs
The cheapest call here is 0 credits, so $15/mo (Pro) buys 10,000 of them — $1.50 per 1,000 credits. Credits roll over and never expire, and failed or blocked calls are not charged.
Full pricing →- 1,000 free credits on signup, no card
- One key, all 280 APIs, one credit pool
- Failed and blocked calls are never charged
- Credits roll over and never expire
Call it in two lines
Sign up, get 1,000 credits and one key that works on every engine. Then this is the whole protocol.
curl -X POST https://api.reefapi.com/reverb/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{}'import requests
r = requests.post(
"https://api.reefapi.com/reverb/v1/search",
headers={"x-api-key": REEF_KEY},
json={},
)
print(r.json()["data"])Have a question? We got answers.
The questions people actually ask before wiring up Reverb.
Get a free key →Can I get sold prices or a price history from Reverb?▾
No, and this API will not fake one. Reverb does not publish sold prices, a price history or completed-sale data to visitors, and its marketplace quietly ignores a sold filter: asking for sold listings returns the identical result count and hands back live listings anyway. What you get instead is the live order book plus the current floor per model, new and used, from models and model/detail. If you need transacted prices for instruments, that is a different source.
Are prices in dollars even when the seller is in Europe or Japan?▾
Yes. price_usd is always US dollars with price_display beside it, and the seller's own currency is reported separately as listing_currency. One consequence worth knowing: the marketplace's price sort is applied in the seller's currency, so on a descending page a JPY listing converting to 98,652 dollars came ahead of a US listing at 100,000. Sort on price_usd yourself when exact dollar order matters.
Which filters actually work?▾
Only the ones offered, and each was verified row by row against the unfiltered result of the same run. On a 77,009-result stratocaster search: a 1000-2000 dollar band left 8,397, Mint 2,501, Mint or Excellent 12,419, a 1960-1969 year range 770, sellers in the UK 5,052, ships to the US 41,497, free shipping 416, local pickup 26,255, preferred sellers 48,927, the Electric Guitars department 29,589 and the Solid Body category 25,071. Filters the marketplace accepts and then ignores - decade, currency, model, finish, accepts-offers, a shop slug - are not offered here at all.
How do I get every listing of one specific model?▾
model/listings. Reverb keeps a list of the exact product variants behind each model page, and this action uses it, so Fender American Professional II Stratocaster returns the 575 listings that really are that model instead of the tens of thousands a keyword search matches. Two of twenty rows on a measured page do not even contain the word Stratocaster in their title - they call it American Pro II - and they still come back. Add condition used to read only the used market for that model.
Which fields can be empty, and how often?▾
Measured across 500 listings in 10 departments: make, model, condition, price, the category path, the shop, inventory and the publish date were filled on 500 of 500, the image on 96 percent. Two fields are seller-entered and category-bound: year is filled on 51 percent overall, 38 of 50 on electric guitars but 7 of 50 on drums, and finish on 40 percent, 32 of 50 on electric guitars but 4 of 50 on basses. A year filter therefore also removes every listing whose seller did not state a year.
Why does a Squier search return listings whose make is Fender?▾
Because Reverb matches brand families, and Squier is a Fender sub-brand. On a measured page 5 of 24 rows carried make Fender with titles such as Fender Squier Sonic Stratocaster. That is the marketplace's own behaviour, not a filter failure. Filter on the row's make field if you need the strict brand.
How large can a page be, and how deep can I go?▾
Fifty rows a page, which is the marketplace's own ceiling; asking for more is clamped and limit tells you what was used. Depth is not limited to what the marketplace prints: it reports 50 total pages on every result regardless of size, and page 120 of a 790,000-result search returned real, distinct rows. total_pages in the response is computed from total so it is the number you can actually rely on.
Can I look up many listings in one call?▾
Not through Reverb - there is no batch-by-id route, and the marketplace ignores a list of ids and hands back its whole catalogue. Listing detail is one call per item, which is why it is priced at one credit. For refreshing a catalogue cheaply, work from search and shop/listings, which return up to 50 full records per call, or from models, which gives one price floor per model rather than per listing.
What is the Reverb API?▾
Reverb API is a ReefAPI endpoint group for musical instrument marketplace: guitars, synths, pedals and amps with prices in usd, condition grades and per-model price floors. It returns live JSON through POST requests under /reverb/v1.
Is the Reverb API free to try?▾
Yes. ReefAPI starts with 1,000 free credits, no card required. Reverb calls use the same shared credit balance as every other ReefAPI engine.
Do I need a Reverb login or account?▾
No login to Reverb is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.
How fresh is the Reverb data?▾
The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.
How many credits does the Reverb API use?▾
Reverb actions currently cost 1-3 credits per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.
Can I call Reverb from an AI assistant or MCP client?▾
Yes. Connect ReefAPI once through MCP and your assistant can call reverb actions with the same key, credit pool and JSON envelope used by normal REST requests.
116 E-commerce & Marketplaces APIs on the same key
One key, one credit pool, one response envelope. If you are pulling Reverb, you are one call away from the rest of the category — no second contract, no second integration.
Need something this API does not do?
Name the endpoint, the field, or a source we do not carry yet. We ship new APIs every week and you would be first to get the key. Real people read every message and reply the same day.
Try it on your own data before you pay anything
The call above is the real endpoint, not a recording. A free key gives you 1,000 credits, the other 279 APIs, and the same envelope everywhere.
Endpoints, parameters and credit costs on this page are read from the live catalog and cannot drift from what the API accepts. Field notes were captured on 2026-09-23.