Export Reverb demand data: sales in the last 30 and 90 days, price trend, sell-through and watchers per product. CSV, Excel, JSON or XML.
- Total runs
- 36
- Bookmarked
- 0
- Last modified
- 2 days ago
This scraper was last updated on .
What does the Reverb Trending Gear Scraper return?
Reverb Scraper - Used Gear Listings, Prices & Demand
Scrape Reverb used gear listings with the demand signals the marketplace hides: watchers, views and offer counts on every item. Each row carries brand, model, build year, condition, price, seller rating and shipping, and the run can rank what it collected by how many people are watching. No login, no API key, no browser. Export to CSV, JSON, Excel, or XML.
Reverb closed its public Price Guide endpoint, and its search results never show you how much interest a listing has. This reads the marketplace API directly, adds the per-item demand numbers, and rebuilds model-level pricing from live listings: lowest new price, lowest used price, and how many of each are on sale right now.
| Who uses it | What they scrape Reverb for |
|---|---|
| Gear dealers and resellers | What is moving, at what price, and which listings are collecting watchers |
| Pricing analysts | Lowest new and used asking price per model, refreshed on a schedule |
| Instrument brands | How their models are priced and stocked against rivals on the used market |
| Marketplace researchers | Supply by category, seller quality, and how promotions move inventory |
| Collectors and buyers | Vintage gear by build year, condition and country, with the seller's rating attached |
What it does
Six collections from Reverb's public API, all writing into one dataset and tagged by a collection field.
- ๐ธ Listings (38 fields): title, brand, model, finish, build year, condition, price and buyer price, currency, auction flag, inventory, categories, seller name, seller rating and feedback count, shipping regions and the US rate, photos, description, and the item URL.
- ๐ Demand signals (opt-in, 13 more fields): watchers, views, offer count, exact item location, videos, accepted payment methods, return policy and shipping policy.
- ๐ช Seller profiles (opt-in, 8 more fields): shop slug, country, shop type, website, vacation status, and the quick-shipper and quick-responder badges.
- ๐ต Products: Reverb's canonical model pages with the lowest new price, the lowest used price, and how many new and used units are listed.
- ๐ Categories, curated sets, sales and news: the 14 root types and 320 categories with optional live counts, the collections Reverb is featuring, every running promotion with its coupon code and end date, and Reverb News posts.
What you can do with Reverb data
๐ Find what is actually trending.
Turn on the demand signals and set rankBy to watches or views. The run collects the slice you asked for, then writes it back ordered, with a rankPosition on every row.
๐ฐ Build your own price guide.
Run the products collection for a brand or a gear type and get the lowest new and used asking price per model, with the number of listings behind each figure, so you can see how deep or thin that market is.
๐ท Price your own inventory.
Filter listings by brand, build year and condition, and compare them against the live asks for the same gear, seller rating and shipping cost included.
๐ Watch the promotions.
The sales collection lists every live Reverb promotion with its coupon code, dates and how many listings take part. Feed a sale ID back into the listing filter to see exactly which gear it covers.
Why choose this scraper
| What you get | |
|---|---|
| Demand signals per item | Watchers, views and offers on each listing, the numbers that show what buyers actually want. |
| Six collections, one run | Listings, model pages, categories, curated sets, sales and news, sharing a single item budget. |
| Filters that were measured | Reverb ignores a filter it does not recognise instead of rejecting it. Every filter and sort here was tested against result counts, and the ones that do nothing were left out of the schema. |
| Past the 20,000-item window | Reverb serves at most 20,000 items per query. Ask for more and the run splits the query into 13 price bands and deduplicates across them. |
| Model-level pricing | Lowest new and used ask per canonical model, with listing counts, now that Reverb's public Price Guide endpoint is closed. |
| Fast and light | 2,000 listings in 85 seconds on 512 MB, straight HTTP with no proxy and no browser. |
How it compares
Reverb has more than a dozen scrapers on Apify and most of them return the same search-results fields: title, price, condition, seller name. The difference here is the second request per item. Watchers, views and offer counts only exist on the listing detail document, so a scraper that reads search results alone cannot rank by demand at any price, and the ones that do read details charge for them on every row instead of only when you ask.
| Actor | Users (30d) | Price per row | Demand signals | Collections |
|---|---|---|---|---|
parseforge/reverb-trending-gear-scraper |
new | $0.005, extras billed separately | Watchers, views, offers, rank | 6 |
devilscrapes/reverb-sold-listings |
2 | $0.005 plus $0.20 per run | No | 1 |
jungle_synthesizer/reverb-price-guide-used-gear-scraper |
3 | $0.0005 plus $0.10 per run | No | 1 |
sashaebashu/reverb-scraper |
2 | $0.002 | No | 1 |
automation-lab/reverb-musical-instruments-marketplace-scraper |
1 | $0.005 per run start | No | 1 |
We are more expensive per row than the cheapest of them. What the difference buys is the demand data, the model-level pricing, and filters that were verified one by one against Reverb's own result counts.
What a listing looks like
One real row from a verified run, with the demand signals and the seller profile turned on:
{
"collection": "listings",
"listingId": "93701684",
"title": "Gibson Guitar Of The Week #1 SG Supreme Bass 2007 - Natural",
"make": "Gibson",
"model": "Guitar Of The Week #18 SG Supreme Bass",
"finish": "Natural",
"year": "2007",
"condition": "Good",
"conditionSlug": "good",
"price": 1900,
"priceCurrency": "USD",
"priceDisplay": "$1,900",
"buyerPrice": 1900,
"listingCurrency": "USD",
"isAuction": "No",
"offersEnabled": "Yes",
"inventory": 1,
"state": "live",
"categories": ["Bass Guitars / Short Scale", "Bass Guitars / 4-String"],
"shopName": "Revolution GuitarWorks",
"shopId": "159193",
"shopIsPreferredSeller": "Yes",
"shopFeedbackCount": 3535,
"shopRatingPercentage": 0.9980582524271845,
"shippingRegions": ["US_CON"],
"freeExpeditedShipping": "No",
"localPickupAvailable": "Yes",
"createdAt": "2025-12-23T18:29:16-06:00",
"publishedAt": "2025-12-23T18:32:19-06:00",
"photoUrl": "https://rvb-img.reverb.com/i/s--OIGp9Fpj--/quality=medium-low,height=800,width=800,fit=contain/94b48f46-e6a2-4556-8606-a2d8a2792fff.jpg",
"photoCount": 1,
"description": "This Gibson SG Supreme Bass was the first of the Guitar of the Week series that went through 2007 with a maximum of 400 units produced...",
"url": "https://reverb.com/item/93701684",
"watches": 156,
"views": 3375,
"offerCount": 1,
"location": "Ramsey, MN, US",
"originCountryCode": "US",
"handmade": "No",
"soldAsIs": "No",
"videoCount": 0,
"comparisonShoppingPageId": 87327,
"acceptedPaymentMethods": ["direct_checkout", "paypal", "paypal_pay_later"],
"returnPolicy": "This product can be returned within 7 days of receipt.",
"shopSlug": "rgw",
"shopType": "business",
"shopQuickShipper": "Yes",
"scrapedAt": "2026-09-08T14:28:22.416Z"
}
A row never carries a literal null: withheld values come back as Not Disclosed, fields that do not apply as N/A, and booleans as Yes or No. A products row instead carries newLowPrice, usedLowPrice, newListingCount, usedListingCount and totalListingCount for one canonical model.
Configure the run
Pick one or more collections. maxItems is the budget for the whole run: each collection takes an even share and whatever it does not use rolls over to the next one. The Input tab lists every parameter.
The 50 most watched used Stratocasters, ranked by demand:
{ "collections": ["listings"], "query": "stratocaster", "condition": "used", "includeListingStats": true, "rankBy": "watches", "maxItems": 50 }
Price data for every Gibson model page:
{ "collections": ["products"], "make": "Gibson", "maxItems": 500 }
Vintage amps built before 1970, listed in the US, with the seller profile attached:
{ "collections": ["listings"], "productType": "amps", "yearMax": 1970, "itemRegion": "US", "includeShopProfiles": true, "maxItems": 300 }
Free users
Free-plan runs return up to 10 rows as a preview. Upgrade your Apify plan to collect up to 1,000,000 rows per run.
Run it
- Create a free Apify account with $5 in credit.
- Open the Reverb Trending Gear Scraper.
- Pick your
collections, add filters such asquery,make,productTypeorcondition, setmaxItems, and click Start. - Export the results as CSV, Excel, JSON, or XML from the Dataset tab.
Run it programmatically through the Apify API or the ApifyClient for JavaScript and Python.
Use with AI agents (MCP)
Give an AI agent live access to Reverb through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:
claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/reverb-trending-gear-scraper"
Then prompt it in plain language:
- "Find the 20 most watched used Les Pauls on Reverb right now and list their prices and sellers."
- "What is the lowest used price for a Fender American Professional II Stratocaster, and how many are listed?"
- "List every live Reverb sale with its coupon code and end date."
Copy this into ChatGPT, Claude, or Cursor to start:
Use the Apify Actor "parseforge/reverb-trending-gear-scraper" to collect Reverb marketplace data. Input: { "collections": ["listings"], "query": "<keyword>", "make": "<brand>", "condition": "<used|new|all>", "includeListingStats": true, "rankBy": "watches", "maxItems": <n> }. It returns title, make, model, year, condition, price, seller name and rating, watchers, views, offer count and the item URL per listing. Call it with the ApifyClient and my APIFY_TOKEN.
Troubleshooting
Why did I get far more results than my filter should return?
Reverb ignores a filter it does not recognise rather than rejecting it, so a misspelled brand quietly widens the search to the whole catalogue. Check the log line that reports how Reverb read your query, for example Reverb read the query as "Electric Guitars": 219811 listings. Unsupported sort and condition values are blocked before the request; brand and category slugs are yours to spell.
Why do I get fewer items than I asked for?
Reverb serves at most 20,000 items per query. Above that the run splits the query into price bands automatically, but a narrow filter can still hold fewer items than your maxItems, and rows Reverb repeats across pages are dropped instead of billed.
Why are watchers and views empty?
They live on the listing detail document, not in search results. Turn on includeListingStats, or set rankBy, which turns it on for you.
Why is category being ignored?
Reverb only honours a sub-category together with a productType. Use categoryUuid to filter on its own; run the categories collection to get the UUIDs.
Why is the run slow?
Plain listings run at about 23 rows per second. Each demand-signal or seller-profile block adds one request per item, so a ranked run of 1,000 listings takes a few minutes. Lower maxItems or split the job into scheduled runs.
A field stopped filling.
Reverb changed its public API shape. Email us with your run ID so we can update the parser.
FAQ
| Question | Answer |
|---|---|
| Do I need a Reverb account or API key? | No. It reads Reverb's public API, so there is no OAuth app or token to manage. |
| Does it include the Reverb Price Guide? | Reverb closed that endpoint to the public. The products collection rebuilds the useful part from live listings: lowest new and used asking price per model, and how many are listed. |
| Can I get sold prices? | No. Reverb's public API exposes live listings, not completed sales. Watchers, views and offer counts are the demand signal it does expose. |
| How do I find what is trending? | Turn on includeListingStats and set rankBy to watches or views. Every row comes back with a rankPosition. |
| Can I scrape one seller's inventory? | Filter as you like and turn on includeShopProfiles, then filter the export by shopName or shopSlug. |
| How many items per run? | Free plan: 10. Paid: up to 1,000,000, subject to Reverb's 20,000-item window per query, which the run works around with price bands. |
| How fast is it? | 2,000 listings in 85 seconds on 512 MB in a verified run. Enrichment adds one request per item. |
| Does it use a proxy? | Only if it has to. Requests go out directly and the run falls back to Apify Proxy if the container IP is blocked. |
| Why are some fields "Not Disclosed"? | The seller did not publish that value. Rows never carry nulls, so withheld data says so and fields that do not apply say N/A. |
| Is this an official Reverb product? | No. It is unofficial and reads only public Reverb data. |
๐ Need help? Email parseforge@protonmail.com with your run ID, your input, and what you expected.
โ ๏ธ Disclaimer. This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by Reverb.com LLC. It collects only publicly available Reverb data. You are responsible for using the data in compliance with Reverb's terms and applicable laws, including GDPR, CCPA, and PIPL. Do not use it to identify, profile, or target individuals.
What input does the Reverb Trending Gear Scraper accept?
| Field | Type | What it does | Default |
|---|---|---|---|
| collections | array | One or more collections. Rows from every collection land in the same dataset, tagged by the `collection` field. maxItems is the budget for the whole run: each collection gets an even share and whatever it does not use rolls over to the next one. | ["listings"] |
| maxItems | integer | Total rows for the run, shared across the selected collections. Free Apify plans are capped at 10 rows as a preview. Reverb serves at most 20,000 items per marketplace query; ask for more and the query is automatically split into price bands to get past that window. | 20 |
| query | string | Free-text search over listings, for example "1959 les paul" or "tube screamer". Leave empty to browse everything. | not set |
| make | string | Brand name as Reverb spells it, for example Fender, Gibson, Boss, Roland. An unknown brand is ignored by Reverb rather than rejected, so check the row count if you get more than you expected. | not set |
| productType | string | Top-level gear type slug, for example electric-guitars, acoustic-guitars, effects-and-pedals, amps, keyboards-and-synths, drums-and-percussion, pro-audio, bass-guitars, folk-instruments, home-audio, parts, accessories, band-and-orchestra, dj-and-lighting-gear. | not set |
| category | string | Sub-category slug, for example solid-body or 5-string-or-more. Reverb only honours this together with a product type; run the "categories" collection to see every slug. | not set |
| categoryUuid | string | Alternative to the two fields above: the category UUID from the "categories" collection. Works on its own. | not set |
| condition | string (10 options) | Condition filter. "all" covers both new and used gear. | not set |
| priceMin | integer | Lowest asking price to include, in US dollars. | not set |
| priceMax | integer | Highest asking price to include, in US dollars. | not set |
| yearMin | integer | Earliest build year to include, matched against the year Reverb has on the listing. | not set |
| yearMax | integer | Latest build year to include, matched against the year Reverb has on the listing. | not set |
| itemRegion | string | Two-letter country code of the seller's location, for example US, GB, DE, JP. | not set |
| shipsTo | string | Two-letter country code the item can be shipped to. | not set |
| handmade | boolean | Only gear Reverb flags as handmade. | false |
| freeShipping | boolean | Only listings that ship free. | false |
| preferredSeller | boolean | Only listings from sellers holding the Preferred Seller badge. | false |
| curatedSetId | integer | Only listings inside one of Reverb's featured sets. IDs come from the "curated-sets" collection. | not set |
| saleId | integer | Only listings taking part in one live sale. IDs come from the "sales" collection. | not set |
| sort | string (4 options) | Reverb accepts any string here and silently ignores the ones it does not know, so only the four orders that were measured to work are offered. | not set |
| includeListingStats | boolean | Fetches each listing's detail page to add watchers, views, offer count, exact location, videos, payment methods and return policy. This is what makes a listing set rankable by demand. | false |
| includeShopProfiles | boolean | Adds the seller's slug, country, shop type, website, vacation status and quick-shipper/quick-responder badges. Each shop is fetched once per run even when it has many listings. | false |
| includeListingCounts | boolean | Fills listingCount on the "categories" collection with how many items are listed in that category right now. Curated sets always get their count; categories are opt-in because there are 320 of them. | false |
| rankBy | string (3 options) | Orders the listings this run collected and writes a rankPosition on each row. Needs the demand signals above and turns them on automatically. | none |
| productQuery | string | Free-text search for the "products" collection, for example "stratocaster". Falls back to the listing search query when empty. | not set |
| useApifyProxy | boolean | Reverb's API is reached directly, which is free and fast. Leave this on so the run can fall back to Apify Proxy (datacenter, then residential) if the container's IP gets blocked. Turning it off makes a blocked run fail instead. | true |
How much does the Reverb Trending Gear Scraper cost?
from $7.24 per 1,000 results
| Charged for | What it is | Price each |
|---|---|---|
| result | Single result in the default dataset. | $0.00724 to $0.008 |
| Actor Start | Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event). | $0.00445 to $0.005 |
| Listing | Charged once per marketplace listing written to your dataset. Listings Reverb repeats across pages are deduplicated before they are written, so a repeat is never charged twice. | $0.00445 to $0.005 |
| Listing Demand Signals | Optional. Charged once per listing detail fetched for watchers, views, offer count, exact location, videos, payment methods and policies. Only with includeListingStats or rankBy. | $0.00356 to $0.004 |
| Seller Profile | Optional. Charged once per seller profile fetched for shop slug, country, type, website, vacation status and badges. Only with includeShopProfiles, and once per shop per run. | $0.00356 to $0.004 |
| Model Page | Charged once per canonical model page written, with its lowest new price, lowest used price and how many new and used units are listed. | $0.00445 to $0.005 |
| Category | Charged once per category written from the Reverb category tree, root types included. | $0.00267 to $0.003 |
| Live Listing Count | Optional. Charged once per category counted against the live marketplace. Only with includeListingCounts. | $0.00267 to $0.003 |
| Curated Set | Charged once per featured Reverb collection written, including its live item count. | $0.00267 to $0.003 |
| Sale | Charged once per live Reverb promotion written, with its coupon code, dates and how many listings take part. | $0.00267 to $0.003 |
| Article | Charged once per Reverb News post written, with its title, summary, author and publication date. | $0.00267 to $0.003 |
Tiered: the lower figure is the price on a higher Apify plan. Billing and the free credit live on Apify.
How do I call the Reverb Trending Gear Scraper API?
One POST returns the dataset directly. Same shape for every scraper in the library, so swapping the slug is the only change.
curl -X POST "https://api.apify.com/v2/acts/parseforge~reverb-trending-gear-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"collections": [
"listings"
],
"maxItems": 20,
"handmade": false,
"freeShipping": false,
"preferredSeller": false
}' What example inputs can I use?
Use these inputs to see how a run is configured.
{
"collections": [
"listings"
],
"maxItems": 20,
"handmade": false,
"freeShipping": false,
"preferredSeller": false
} What do users say about the Reverb Trending Gear Scraper?
No reviews yet. Be the first.
How do I report an issue with the Reverb Trending Gear Scraper?
We build and maintain this scraper, so a problem with it comes to us. Report it on the Apify listing and the thread stays attached to the scraper where the next person can find it: open an issue.
Broken and urgent, or you would rather not post in public? Write to parseforge@protonmail.com and it reaches the people who wrote it.
