Reverb API & Scraper
The Reverb API turns reverb.com, the global marketplace for new, used and vintage musical instruments, into clean JSON in ten actions.
🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.
search reads the live marketplace and every filter it offers was measured to change the result set: a price band in US dollars, one or several condition grades, one or several brands, a department or a sub-category, the seller's country, the country an item ships to, a year range, free shipping, local pickup, preferred sellers and a single shop. Rows carry listing_id, title, make, model, year, finish, condition and condition_slug, price_usd as a number with price_display beside it, the seller's own listing_currency, the category path, shop_name, shop_id and shop_slug, inventory, offers_enabled, auction, state, published_at, the shipping rate to every region the item reaches, the image and the description as plain text. listing adds the seller's city and country, view and watch counts, the offer count, the return and shipping policy, whether it is sold as-is, and the model_id that links it to Reverb's model page. shop and shop/listings read one seller's record and their whole inventory. models, model/detail and model/listings read Reverb's per-model pages: new_low_price_usd, used_low_price_usd, new_listings and used_listings give the lowest live ask for a new and a used example of that model and how many of each are for sale, and model/listings resolves the listings that really are that model rather than the tens of thousands that merely match its name - 575 rows against a keyword search's 77,000. categories, conditions and brand are the enums the filters take. What Reverb does not publish, this API does not invent: there are no sold prices and no price history, so what comes back is the live market and the current floor per model. Verification on 2026-09-23: 67 of 67 controlled cases passed across 127 live calls with no transport failures, every filter was checked row by row against the unfiltered result of the same run, and 10 of 10 listing ids taken from 10 different searches round-tripped to the same record. No Reverb account and no key of yours - one ReefAPI key and the standard { ok, data, meta, error } envelope.
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.
Real request and response JSON
Captured from the indexed primary action, search, on .
{
"method": "POST",
"url": "https://api.reefapi.com/reverb/v1/search",
"headers": {
"x-api-key": "$REEF_KEY",
"content-type": "application/json"
},
"body": {
"query": "stratocaster"
}
}{
"ok": true,
"meta": {
"api": "reverb",
"endpoint": "search",
"mode": "live",
"latency_ms": 1144.2,
"record_count": 24,
"bytes": 135711,
"cache_hit": false,
"stop_reason": "limit_reached",
"total": 77776,
"charged_credits": 2,
"version": "1.0.0"
},
"data": {
"listings": [
{
"listing_id": 98282577,
"url": "https://reverb.com/item/98282577-fender-stratocaster-mary-kaye-slab-board-1959-blonde-refinished-cod-2183vg",
"title": "Fender Stratocaster Mary Kaye Slab Board 1959 Blonde Refinished (COD 2183VG)",
"make": "Fender",
"model": "Stratocaster Mary Kaye Slab Board Vintage",
"year": "1959",
"finish": "Blonde",
"condition": "Very Good",
"condition_slug": "very-good",
"price_usd": 60597.43,
"price_display": "$60,597.43",
"currency": "USD",
"buyer_price_usd": 60597.43,
"original_price_usd": 72840.42,
"price_drop_percent": 17,
"listing_currency": "EUR",
"categories": [
"Electric Guitars / Solid Body"
],
"shop_name": "Guitar Sauce Italy",
"shop_id": 348730,
"shop_slug": "guitar-sauce-italy",
"preferred_seller": true,
"inventory": 1,
"offers_enabled": false,
"auction": false,
"state": "live",
"published_at": "2026-06-16T09:15:03-05:00",
"created_at": "2026-06-16T09:11:27-05:00",
"free_expedited_shipping": false,
"has_free_shipping": false,
"local_pickup": false,
"shipping_rates": [
{
"region": "[trimmed-depth]",
"amount_usd": "[trimmed-depth]",
"display": "[trimmed-depth]",
"carrier_calculated": "[trimmed-depth]"
},
{
"region": "[trimmed-depth]",
"amount_usd": "[trimmed-depth]",
"display": "[trimmed-depth]",
"carrier_calculated": "[trimmed-depth]"
},
{
"region": "[trimmed-depth]",
"amount_usd": "[trimmed-depth]",
"display": "[trimmed-depth]",
"carrier_calculated": "[trimmed-depth]"
}
],
"image": "https://rvb-img.reverb.com/i/s--WMuLq3YX--/quality=medium-low,height=800,width=800,fit=contain/5c7ee891-507e-4d01-965e-c251db5fda0c.jpg",
"description": "One of the rarest and most sought-after Stratocasters of the entire pre-CBS production, this April 1959 Fender Mary Kaye Blonde Slab Board Stratocaster embodies some of the most iconic features of that unique era in a single instrument. The ash body, while the all-gold hardware lends a unique elegance, perfectly accentuated by the pristine pickguard. 1959 also marks the first year of the famous Brazilian rosewood Slab Board fingerboard, one of the most coveted specifications among collectors. Fender only made a handful of Mary Kayes that year, instruments now considered extremely rare and clos"
},
{
"listing_id": 96374458,
"url": "https://reverb.com/item/96374458-1957-fender-stratocaster-sunburst",
"title": "1957 Fender Stratocaster Sunburst",
"make": "Fender",
"model": "Stratocaster",
"year": "1957",
"finish": "Stratocaster",
"condition": "Very Good",
"condition_slug": "very-good",
"price_usd": 54900,
"price_display": "$54,900",
"currency": "USD",
"buyer_price_usd": 54900,
"listing_currency": "USD",
"categories": [
"Electric Guitars / Solid Body"
],
"shop_name": "Olivia's Vintage",
"shop_id": 33081,
"shop_slug": "olivias-vintage",
"preferred_seller": true,
"inventory": 1,
"offers_enabled": true,
"auction": false,
"state": "live",
"published_at": "2026-07-20T15:40:54-05:00",
"created_at": "2026-04-24T15:16:56-05:00",
"free_expedited_shipping": false,
"has_free_shipping": false,
"local_pickup": false,
"shipping_rates": [
{
"region": "[trimmed-depth]",
"amount_usd": "[trimmed-depth]",
"display": "[trimmed-depth]",
"carrier_calculated": "[trimmed-depth]"
},
{
"region": "[trimmed-depth]",
"amount_usd": "[trimmed-depth]",
"display": "[trimmed-depth]",
"carrier_calculated": "[trimmed-depth]"
},
{
"region": "[trimmed-depth]",
"amount_usd": "[trimmed-depth]",
"display": "[trimmed-depth]",
"carrier_calculated": "[trimmed-depth]"
}
],
"image": "https://rvb-img.reverb.com/i/s--Z2K1LMT7--/quality=medium-low,height=800,width=800,fit=contain/6672224a-f062-484a-80d2-7284741b208d.jpg",
"description": "Olivia's Vintage would like to present this 1957 Fender Stratocaster in its original Sunburst finish. It has a great playing neck with great frets. It's all original with the exception of the nut, metal spacer underneath the string tree and 3 of the 6 adjustment screws for the bridge saddles. It is also 100% complete along with its original tremolo arm, bridge cover and original tweed hardshell case along with an original polish cloth, one unused Fender string, Bobby Lee strap and cable. This Strat looks great with nicks + dings, belt buckle wear, finish checking on the body and other cosmetic"
},
{
"listing_id": 50409101,
"url": "https://reverb.com/item/50409101-fender-stratocaster-1979-black-1st-owner-fully-original-vintage-70-s-guitar-very-rare-strat-with-unique-original-fender-paint-limited-to-few-cases-in-79-very-rare-unique-closed-to-mint",
"title": "Fender Stratocaster 1979 Black 1st Owner Fully Original Vintage 70's Guitar. Very Rare Strat With \"unique Original Fender Paint\" Limited To Few Cases In 79! Very Rare! Unique! Closed To MINT!!",
"make": "Fender",
"model": "Stratocaster",
"year": "1979",
"finish": "Black",
"condition": "Excellent",
"condition_slug": "excellent",
"price_usd": 4749.95,
"price_display": "$4,749.95",
"currency": "USD",
"buyer_price_usd": 4749.95,
"listing_currency": "EUR",
"categories": [
"Electric Guitars / Solid Body"
],
"shop_name": "Danilo's Gear Garage",
"shop_id": 1740600,
"shop_slug": "danilos-gear-garage-14",
"preferred_seller": false,
"inventory": 1,
"offers_enabled": true,
"auction": false,
"state": "live",
"published_at": "2022-02-06T08:52:51-06:00",
"created_at": "2022-02-06T08:52:40-06:00",
"free_expedited_shipping": false,
"has_free_shipping": false,
"local_pickup": true,
"shipping_rates": [
{
"region": "[trimmed-depth]",
"amount_usd": "[trimmed-depth]",
"display": "[trimmed-depth]",
"carrier_calculated": "[trimmed-depth]"
},
{
"region": "[trimmed-depth]",
"amount_usd": "[trimmed-depth]",
"display": "[trimmed-depth]",
"carrier_calculated": "[trimmed-depth]"
},
{
"region": "[trimmed-depth]",
"amount_usd": "[trimmed-depth]",
"display": "[trimmed-depth]",
"carrier_calculated": "[trimmed-depth]"
}
],
"image": "https://rvb-img.reverb.com/i/s--CuW_5f3e--/quality=medium-low,height=800,width=800,fit=contain/u2bum24fnwybkeehpnkf.webp",
"description": "Fender stratocaster hardtail usa 1979 in original black colour sold on behalf of first owner! Guitar very rarely used and unscrewed first time now to make pics to electronic, fully original! Paint has beautiful natural cracks in some side area as visible from pics. Very rare in this extremely good condition, and you can see from pic that it is changing colour with the seasons... this has been discussed with Fender and confirmed that is a \"very interesting guitar\" changing colour due to transparent faulty paint trials in 79: crazy rare unexpected chameleon effect from 79' paint period. I've don"
}
],
"total": 77776,
"page": 1,
"limit": 24,
"total_pages": 3241,
"ships_to": "Everywhere Else",
"filters_applied": {
"query": "stratocaster"
}
}
}What the Reverb API does
| Action | Description | Concrete use case | Key params |
|---|---|---|---|
| search | Search Reverb's live marketplace. Every filter offered here was measured to change the result set: price band, condition, brand, category, the seller's country, the country an item ships to, a year range, free shipping, local pickup, preferred sellers and one shop. Rows carry the price in USD (whatever currency the seller lists in), the condition, the year, the shop, the shipping rate per region and the full description. | Pricing teams call search to search Reverb's live marketplace. | query, make, product_type, category_uuid, condition, ... |
| listing | One listing in full: everything a search row carries plus the seller's city and country, the shipping rate to every region it ships to, how many people have viewed and watched it, the offer count, the return and shipping policy, whether it is sold as-is, and the model id that links it to Reverb's model page. | Marketplace operators call listing to get one listing in full. | listing_id |
| shop | One seller's record by slug: name, city and country, whether Reverb marks them a Preferred Seller / quick shipper / quick responder, their feedback count and rating, their shipping and payment policy, and whether the shop is on vacation. | Catalog enrichment teams call shop to get one seller's record by slug. | shop |
| shop/listings | One seller's whole inventory, paged — the same rows as `search`, plus the shop record when you addressed it by slug. This is how a dealer's catalogue is mirrored: a shop with 603 listings is 13 calls at 50 rows a page. | Retail analysts call shop/listings to get one seller's whole inventory, paged. | shop, shop_id, query, condition, price_min, ... |
| models | Reverb's MODEL pages — one row per instrument model rather than per listing, each with the lowest live asking price for a NEW one, the lowest for a USED one, and how many of each are for sale. This is the closest thing Reverb publishes to a price guide, and it is a snapshot of asks, not of completed sales. 78 791 models are browsable with no keyword at all. | Pricing teams call models to get reverb's MODEL pages. | query, make, product_type, category_uuid, year_min, ... |
| model/detail | One model page by numeric id: the lowest new and used asking price, the live count of each, Reverb's own star rating and review count for the model, the description and the image. | Marketplace operators call model/detail to get one model page by numeric id. | model_id |
| model/listings | Every live listing OF one model, not merely matching its name — Reverb keeps a list of the exact product variants behind each model page and this action uses it, so a search for 'Fender American Professional II Stratocaster' that would return 76 000 loose matches returns the 574 that really are one. Two upstream calls: the model page, then its listings. | Catalog enrichment teams call model/listings to get every live listing OF one model, not merely matching its name. | model_id, condition, price_min, price_max, sort, ... |
| categories | Reverb's whole category tree, flattened: 320 categories with the uuid that `search` and `models` take as `category_uuid`, the department slug that `product_type` takes, and the human name. One call, and it barely changes. | Retail analysts call categories to get reverb's whole category tree, flattened. | product_type, query |
| conditions | The condition grades Reverb uses, with the slug each filter takes and Reverb's own definition of the grade. 🔴 Note that Brand New's slug is `new`, not `brand-new`. | Pricing teams call conditions to get the condition grades Reverb uses, with the slug each filter takes and Reverb's own definition…. | none |
| brand | One brand record by slug: its Reverb id, its canonical name — which is the spelling the `make` filter wants — and its header images. There is no brand INDEX to walk: the source's `/brands` route answers with an empty list whatever you ask it. | Marketplace operators call brand to get one brand record by slug. | brand |
Call search from your stack
curl -X POST https://api.reefapi.com/reverb/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"query":"stratocaster"}'import requests
r = requests.post(
"https://api.reefapi.com/reverb/v1/search",
headers={"x-api-key": REEF_KEY},
json={
"query": "stratocaster"
},
)
print(r.json()["data"])const res = await fetch("https://api.reefapi.com/reverb/v1/search", {
method: "POST",
headers: {
"x-api-key": process.env.REEF_KEY,
"content-type": "application/json",
},
body: JSON.stringify({
"query": "stratocaster"
}),
});
const { ok, data, meta, error } = await res.json();Ask your MCP-connected assistant: call reefapi.reverb.search with {"query":"stratocaster"}.Who uses this API and why
- 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.
- Resale and arbitrage tools watch price drops and offer-enabled listings in a price band and a ships-to country.
Questions developers ask before integrating
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.