Reverb APIreverb.com ↗
Search Reverb.com music gear listings by keyword, brand, category, price, condition, and year. Returns prices, condition, seller details, and shipping info.
What is the Reverb API?
The Reverb.com API provides access to music gear listings on Reverb's marketplace through a single search_listings endpoint that returns up to 50 fields per listing including price, condition, brand, model, year, and shipping details. You can search across guitars, synthesizers, drums, and more using keyword queries combined with filters for brand, category, price range, condition, and shipping region — with paginated results across up to 50 pages.
curl -X GET 'https://api.parse.bot/scraper/922ddbd0-df54-4078-8b35-cbf1538f0a75/search_listings?page=1&sort=price%7Casc&query=fender+stratocaster&category=electric-guitars¤cy=USD&per_page=5&condition=mint' \ -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 reverb-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.
"""Reverb Listings Search API — browse and filter music gear on Reverb.com."""
from parse_apis.reverb_listings_search_api import Reverb, Condition, Sort, ListingNotFound
client = Reverb()
# Search for guitars sorted by price, bounded iteration
for listing in client.listings.search(query="gibson les paul", sort=Sort.PRICE_ASC, limit=5):
print(listing.title, listing.price, listing.condition_slug)
# Drill into a single result with .first()
result = client.listings.search(query="roland juno", condition=Condition.EXCELLENT, limit=1).first()
if result:
print(result.title, result.price_cents, result.web_url)
print(result.shipping.free_expedited, result.shipping.local_pickup)
for rate in result.shipping.rates:
print(rate.region, rate.amount)
# Typed error handling
try:
for item in client.listings.search(category="electric-guitars", make="Fender", limit=3):
print(item.id, item.make, item.model, item.year, item.published_at)
except ListingNotFound as exc:
print(f"Not found: {exc}")
print("Exercised: listings.search with sort, condition, category, make filters")
Search for music gear listings on Reverb. Supports keyword search, pagination, and filtering by price range, condition, category, brand, year, and sort order. Returns paginated results capped at 50 total pages. Each listing includes pricing, condition, images, shipping details, and seller info. Paginates via integer page counter.
| Param | Type | Description |
|---|---|---|
| make | string | Filter by brand/manufacturer (e.g. 'Fender', 'Gibson', 'Roland') |
| page | integer | Page number for pagination |
| sort | string | Sort order for results |
| query | string | Search keywords (e.g. 'fender stratocaster', 'gibson les paul') |
| category | string | Product type slug to filter by category (e.g. 'electric-guitars', 'acoustic-guitars', 'bass-guitars', 'keyboards-and-synths') |
| currency | string | Display currency code (e.g. 'USD', 'EUR', 'GBP') |
| per_page | integer | Results per page (1-50) |
| ships_to | string | Shipping region code (e.g. 'US_CON', 'EUR_EU', 'GB') |
| year_max | string | Maximum year filter (e.g. '1970') |
| year_min | string | Minimum year filter (e.g. '1960') |
| condition | string | Filter by condition slug |
| price_max | string | Maximum price filter (e.g. '1500') |
| price_min | string | Minimum price filter (e.g. '500') |
{
"type": "object",
"fields": {
"total": "integer - Total number of matching listings",
"listings": "array of listing objects with id, title, make, model, finish, year, price, price_cents, currency, buyer_price, buyer_price_cents, original_price, condition, condition_slug, description, categories, shop_name, shop_slug, preferred_seller, offers_enabled, auction, inventory, published_at, state, images, shipping, ribbon, web_url",
"per_page": "integer - Results per page",
"total_pages": "integer - Total pages available (max 50)",
"current_page": "integer - Current page number"
},
"sample": {
"data": {
"total": 20629,
"listings": [
{
"id": 94194498,
"make": "Gibson",
"year": "",
"model": "Gibson Les Paul Standard",
"price": "$2,280.41",
"state": "Live",
"title": "Gibson Les Paul Standard 50s Figured Top - Honey Amber- Used Excellent",
"finish": "Gibson Les Paul Standard 2012 Transparent Amber - Used Mint",
"images": [
"https://rvb-img.reverb.com/i/s--7MoO0yAL--/quality=medium-low,height=800,width=800,fit=contain/fa621615-148e-4a18-b482-b363f84edce8.jpg"
],
"ribbon": "$380.20 price drop",
"auction": false,
"web_url": "https://reverb.com/item/94194498-gibson-les-paul-standard-50s-figured-top-honey-amber-used-excellent",
"currency": "USD",
"shipping": {
"rates": [
{
"amount": "$64.63",
"region": "CA",
"amount_cents": 6463
}
],
"local_pickup": true,
"free_expedited": false
},
"condition": "Excellent",
"inventory": 1,
"shop_name": "The Guitar Boutique",
"shop_slug": "theguitarboutique",
"categories": [
"Electric Guitars / Solid Body"
],
"buyer_price": "$2,280.41",
"description": "Les Paul Standard 50s Figured...",
"price_cents": 228041,
"published_at": "2026-01-23T20:08:20-08:00",
"condition_slug": "excellent",
"offers_enabled": true,
"original_price": "$2,660.61",
"preferred_seller": true,
"buyer_price_cents": 228041
}
],
"per_page": 3,
"total_pages": 50,
"current_page": 1
},
"status": "success"
}
}About the Reverb API
What the API Returns
The search_listings endpoint queries the Reverb marketplace and returns a paginated list of music gear listings. Each listing object includes identifying fields (id, title, make, model, finish, year), pricing data in both display and cents formats (price, price_cents, buyer_price, buyer_price_cents, currency), and condition, seller, and shipping-related fields. The response envelope includes total, total_pages (capped at 50), current_page, and per_page so you can walk through result sets programmatically.
Filtering and Sorting
Searches can be narrowed with the query parameter for keyword matching (e.g. 'fender stratocaster', 'moog synthesizer'), make for brand filtering (e.g. 'Gibson', 'Roland'), and category for product-type slugs such as 'electric-guitars', 'bass-guitars', or 'keyboards'. Price range, condition, and shipping destination (ships_to accepts codes like 'US_CON', 'EUR_EU', 'GB') further restrict results. The currency parameter controls the display currency returned in price and buyer_price fields. Sort order is controlled via the sort parameter, supporting options like 'price|asc', 'price|desc', and 'date|desc'.
Pagination Behavior
Results are paginated using page and per_page (1–50 results per page). The response always reflects the current page and total pages available, with a hard cap of 50 total pages regardless of how many total listings match the query. For queries returning large result sets, narrow filters or sort by date|desc to surface the most recent inventory first.
The Reverb API is a managed, monitored endpoint for reverb.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when reverb.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 reverb.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?+
- Track price trends for a specific guitar model by querying
search_listingswithmakeandqueryfilters and recordingprice_centsover time - Build a used gear price estimator that aggregates
buyer_pricevalues across condition variants for a givenmakeandmodel - Monitor new listings for a target instrument by sorting
date|descand polling for items added since a known timestamp - Compare regional availability of gear by varying the
ships_toparameter across different country codes - Populate a gear inventory feed filtered by
categoryslug for a blog or affiliate site covering specific instrument types - Identify arbitrage opportunities by comparing
price_centsfor the same model across multiplecurrencyvalues - Build a vintage instrument database by filtering on
yearranges and extractingfinish,make,model, andconditionfields
| 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 Reverb have an official developer API?+
What does the `search_listings` endpoint return per listing?+
id, title, make, model, finish, year, price, price_cents, currency, buyer_price, and buyer_price_cents, along with condition, seller, and shipping-related fields. The response envelope includes total, total_pages, current_page, and per_page for pagination.Is there a limit to how many results I can retrieve?+
per_page set to 50, that means a maximum of 2,500 listings retrievable per search. Narrowing filters — by category, make, or price range — is the practical way to stay within the window for high-volume queries.Does the API return individual listing detail pages, seller profiles, or completed sale history?+
Can I filter by condition (e.g. 'Mint', 'Good') in a search?+
search_listings inputs do not include a standalone condition filter parameter. You can filter the returned results client-side by the condition field. To add a server-side condition filter, you can fork this API on Parse and revise the endpoint to support that parameter.