# Reverb Music Gear Scraper (Guitars, Synths, Pedals, Amps) (`scrapers_lat/reverb-music-gear-scraper`) Actor

Scrape Reverb.com listings for guitars, synths, pedals, amps, drums and pro audio. Get make, model, year, finish, condition, price, shipping, seller and location. Export to JSON, CSV or Excel.

- **URL**: https://apify.com/scrapers\_lat/reverb-music-gear-scraper.md
- **Developed by:** [Scrapers Lat](https://apify.com/scrapers_lat) (community)
- **Categories:** E-commerce, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $7.56 / 1,000 gear listings

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

[![Reverb Music Gear Scraper](https://scrapers.lat/banners/reverb-music-gear-scraper.png)](https://console.apify.com/actors/UcKmS0CQcsxlcEcLC/input)

## Reverb Music Gear Scraper

Here is one real result, with every field the actor returns:

```json
{
  "listingId": "97628129",
  "title": "1979 Fender Stratocaster RW Mocca Hardtail Hangtags incl. original Koffer",
  "make": "Fender",
  "model": "Stratocaster hardtail mocca",
  "finish": null,
  "year": "1979",
  "categoryPrimary": "Electric Guitars / Solid Body",
  "categories": ["Electric Guitars / Solid Body"],
  "categoriesCount": 1,
  "condition": "Excellent",
  "conditionSlug": "excellent",
  "priceAmount": 1940.73,
  "priceCurrency": "USD",
  "priceDisplay": "$1,940.73",
  "buyerPriceAmount": 1940.73,
  "buyerPriceCurrency": "USD",
  "listingCurrency": "EUR",
  "shippingUsAmount": 365.01,
  "freeExpeditedShipping": false,
  "localPickupOnly": false,
  "inventory": 1,
  "hasInventory": false,
  "state": "live",
  "stateLabel": "Live",
  "listingType": "buy_it_now",
  "offersEnabled": true,
  "offerCount": 1,
  "handmade": false,
  "description": "Just arrived: Here's a Fender Stratocaster in the rare Mocha color, without a tremolo (hardtail), including hang tags in the original case...",
  "photoCount": 25,
  "photoPrimary": "https://rvb-img.reverb.com/i/.../aa9b5445-8b73-4122-873f-bb1ca74c0b94.jpeg",
  "shopName": "Secondhand Musicland",
  "shopId": "910358",
  "preferredSeller": true,
  "sellerFeedbackCount": 420,
  "sellerRatingPercentage": 100,
  "sellerCountryCode": "DE",
  "sellerRegion": "Nordrhein-Westfalen",
  "sellerCity": "Herne",
  "sellerLocation": "Herne, Germany",
  "views": 648,
  "watches": 44,
  "createdAt": "2026-05-28T12:19:26-04:00",
  "publishedAt": "2026-05-29T05:05:54-04:00",
  "listingUrl": "https://reverb.com/item/97628129-1979-fender-stratocaster-rw-mocca-hardtail",
  "compsCount": null,
  "compsLow": null,
  "compsMedian": null,
  "compsHigh": null,
  "aiCondition": null,
  "aiNotableSpecs": null,
  "aiBuyerFit": null,
  "aiPriceAssessment": null,
  "query": "stratocaster",
  "source": "reverb.com",
  "observedAt": "2026-08-20T20:24:25.628Z"
}
```

The most complete Reverb gear scraper available. It returns every field Reverb exposes for a listing, including make, model, year, finish, condition, price, buyer price, shipping, seller name, seller rating and seller location, plus derived fields like a cleaned plain-text description and a normalized listing type, and gives you filters on query, category, make, condition, price range and year range to target exactly the gear you need.

**[Input](https://apify.com/scrapers_lat/reverb-music-gear-scraper/input-schema) · [Output](https://apify.com/scrapers_lat/reverb-music-gear-scraper/output-schema) · [Pricing](https://apify.com/scrapers_lat/reverb-music-gear-scraper/pricing) · [Examples](https://apify.com/scrapers_lat/reverb-music-gear-scraper/examples)**

![Platform](https://img.shields.io/badge/platform-Apify-1a1a1a) ![Coverage](https://img.shields.io/badge/coverage-Reverb.com-blue) ![Output](https://img.shields.io/badge/output-JSON%20%7C%20CSV%20%7C%20Excel-green) ![Billing](https://img.shields.io/badge/billing-Pay%20per%20result-orange)

### Table of contents

- [What it does](#what-it-does)
- [Quickstart](#quickstart)
- [Input reference](#input-reference)
- [Output reference](#output-reference)
- [Example output record](#example-output-record)
- [Run via API and CLI](#run-via-api-and-cli)
- [Fetch results](#fetch-results)
- [Billing and limits](#billing-and-limits)
- [FAQ and troubleshooting](#faq-and-troubleshooting)
- [More scrapers at scrapers.lat](#more-scrapers-at-scraperslat)

### What it does

This scraper pulls musical instrument and gear listings from Reverb: guitars, basses, synths, keyboards, effects pedals, amps, drums and pro audio. For each listing you get the make, model, year and finish, the condition, the asking price and buyer price, shipping cost to the US, the seller shop with its rating and feedback count, and the seller location down to city and country. It also returns view and watch counts, the listing state (live, sold or ended), whether offers are enabled and the public listing URL.

Search by free-text query, brand, category, condition, price range and year range, or fetch specific listing IDs directly. Two optional paid add-ons enrich each listing: a price-comparables range built from similar live listings of the same make and model, and an AI gear summary with a condition read, notable specs, a buyer-fit note and a price assessment.

Good for pricing and arbitrage research, market monitoring, collection valuation, and building a gear catalog with real seller and location data.

### Quickstart

Real input example:

```json
{
  "query": ["stratocaster"],
  "make": "Fender",
  "condition": "used",
  "priceMin": 500,
  "priceMax": 3000,
  "yearMin": 1970,
  "yearMax": 1985,
  "sort": "price|asc",
  "maxResults": 50
}
```

Provide at least one of query, category, make or listingIds. Everything else is optional.

### Input reference

| Name | Type | Required | Description | Example |
|------|------|----------|-------------|---------|
| query | array of strings | one of query/category/make/listingIds | Search terms; one search per term | `["stratocaster","les paul"]` |
| category | string | no | Reverb category slug | `electric-guitars` |
| make | string | no | Brand to filter by | `Fender` |
| condition | string | no | One of new, b-stock, used, non-functioning | `used` |
| priceMin | integer | no | Minimum asking price | `500` |
| priceMax | integer | no | Maximum asking price | `3000` |
| yearMin | integer | no | Earliest manufacture year | `1970` |
| yearMax | integer | no | Latest manufacture year | `1985` |
| listingIds | array of strings | no | Specific listing IDs to fetch directly | `["97628129"]` |
| sort | string | no | Sort order for search results | `price|asc` |
| maxResults | integer | no | Max listings for the whole run (free plans capped at 10) | `50` |
| priceComps | boolean | no | Paid add-on, off by default. Attach a comparable price range | `false` |
| aiGearSummary | boolean | no | Paid add-on, off by default. Attach an AI gear summary | `false` |

### Output reference

| Name | Type | Description |
|------|------|-------------|
| listingId | string | Reverb listing id |
| title | string | Listing title |
| make | string | Brand / manufacturer |
| model | string | Model name |
| finish | string | Finish / color |
| year | string | Manufacture year |
| categoryPrimary | string | Primary category |
| categories | array | All category full names |
| categoriesCount | integer | Number of categories |
| condition | string | Condition display name |
| conditionSlug | string | Condition slug |
| priceAmount | number | Asking price amount |
| priceCurrency | string | Price currency code |
| priceDisplay | string | Formatted price |
| buyerPriceAmount | number | Buyer price amount when present |
| buyerPriceCurrency | string | Buyer price currency |
| listingCurrency | string | Seller listing currency |
| shippingUsAmount | number | Shipping cost to the US when present |
| freeExpeditedShipping | boolean | Whether free expedited shipping is offered |
| localPickupOnly | boolean | Whether the item is local pickup only |
| inventory | integer | Available quantity |
| hasInventory | boolean | Whether inventory tracking is on |
| state | string | Listing state slug (live, sold, ended) |
| stateLabel | string | Listing state label |
| listingType | string | buy\_it\_now or auction |
| offersEnabled | boolean | Whether offers are enabled |
| offerCount | integer | Number of active offers |
| handmade | boolean | Whether the item is handmade |
| description | string | Cleaned plain-text description |
| photoCount | integer | Number of photos |
| photoPrimary | string | Primary photo URL |
| shopName | string | Seller shop name |
| shopId | string | Seller shop id |
| preferredSeller | boolean | Whether the seller is a preferred seller |
| sellerFeedbackCount | integer | Seller feedback count |
| sellerRatingPercentage | number | Seller rating percentage |
| sellerCountryCode | string | Seller country code |
| sellerRegion | string | Seller region / state |
| sellerCity | string | Seller city |
| sellerLocation | string | Seller display location |
| views | integer | Listing view count |
| watches | integer | Number of watchers |
| createdAt | string | Listing created timestamp |
| publishedAt | string | Listing published timestamp |
| listingUrl | string | Public listing URL |
| compsCount | integer | Number of comparable live listings (price comps add-on) |
| compsLow | number | Lowest comparable price (price comps add-on) |
| compsMedian | number | Median comparable price (price comps add-on) |
| compsHigh | number | Highest comparable price (price comps add-on) |
| aiCondition | string | AI condition read (AI add-on) |
| aiNotableSpecs | array | AI notable specs (AI add-on) |
| aiBuyerFit | string | AI buyer-fit note (AI add-on) |
| aiPriceAssessment | string | AI price assessment (AI add-on) |
| query | string | Search query that produced this record |
| source | string | Data source |
| observedAt | string | ISO timestamp collected |

### Example output record

See the real record at the top of this page. Every listing follows the same flat shape, with add-on fields staying null unless you enable the matching paid add-on.

### Run via API and CLI

Start a run with the Apify API:

```bash
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~reverb-music-gear-scraper/runs?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"query":["stratocaster"],"make":"Fender","maxResults":50}'
```

Or with the Apify CLI:

```bash
apify call scrapers_lat/reverb-music-gear-scraper \
  --input '{"query":["stratocaster"],"make":"Fender","maxResults":50}'
```

### Fetch results

Read the dataset items for a finished run:

```bash
curl "https://api.apify.com/v2/actor-runs/RUN_ID/dataset/items?token=YOUR_TOKEN&format=json"
```

Swap `format=json` for `format=csv` or `format=xlsx` to export to CSV or Excel.

### Billing and limits

This actor is pay per result. You are charged per listing returned, plus a small one-time actor start event. Optional add-ons are billed only when they produce data: the price-comparables event is charged only when comparable listings are found, and the AI gear summary event is charged only when the model returns a usable summary. Empty and failed runs return no billable results, so you are never charged for a run that returns no data. Free Apify plans are capped at 10 listings per run and cannot use the paid add-ons. The actor also respects your run spend limit and stops returning results once that limit is reached.

### FAQ and troubleshooting

**Do I need a Reverb account or API key?** No. Provide a query, brand, category or listing IDs and run.

**Why is finish null on some listings?** Sellers do not always fill in every field. The actor returns exactly what the listing exposes and leaves missing fields null rather than guessing.

**How do I get sold or ended listings?** Search returns live listings by default. To inspect a specific item regardless of state, pass its id in listingIds; the state field tells you whether it is live, sold or ended.

**Can I run many searches at once?** Yes. Pass several terms in query and the actor runs one search per term, applying your max-results cap across the whole run.

**Why did a price-comparables event not charge on some rows?** When there are not enough comparable live listings for that exact make and model, no range is produced and nothing is charged for that row.

### More scrapers at scrapers.lat

Browse the full catalog of ecommerce, marketplace and lead-generation scrapers at [scrapers.lat](https://scrapers.lat).

This actor is an independent tool and is not affiliated with, endorsed by or sponsored by Reverb.

# Actor input Schema

## `query` (type: `array`):

One or more search terms for musical gear, e.g. Stratocaster, Moog synthesizer, tube screamer. Runs one search per term. Provide at least a Query, Category, Make or Listing IDs.

## `category` (type: `string`):

Optional Reverb category slug to filter by, e.g. electric-guitars, effects-and-pedals, synths-keyboards-and-synthesizers, amps, drums, pro-audio.

## `make` (type: `string`):

Optional brand to filter by, e.g. Fender, Gibson, Moog, Boss, Roland, Marshall.

## `condition` (type: `string`):

Optional condition filter.

## `priceMin` (type: `integer`):

Optional minimum asking price. Leave empty for no minimum.

## `priceMax` (type: `integer`):

Optional maximum asking price. Leave empty for no maximum.

## `yearMin` (type: `integer`):

Optional earliest manufacture year, e.g. 1960. Leave empty for no minimum.

## `yearMax` (type: `integer`):

Optional latest manufacture year, e.g. 1985. Leave empty for no maximum.

## `listingIds` (type: `array`):

Optional specific Reverb listing IDs to fetch directly, instead of searching.

## `sort` (type: `string`):

Optional sort order for search results.

## `maxResults` (type: `integer`):

Maximum number of gear listings to collect across the whole run. Free Apify plans are capped at 10 per run.

## `priceComps` (type: `boolean`):

For each listing, run an extra search for comparable live listings of the same make and model and attach a price range (low, median, high, count). Charged only when comparables are returned. Disabled on free plans.

## `aiGearSummary` (type: `boolean`):

Use AI to add a condition read, notable specs, a buyer-fit note and a price assessment for each listing. Charged only when a usable summary is returned. Disabled on free plans.

## Actor input object example

```json
{
  "query": [
    "stratocaster"
  ],
  "condition": "",
  "sort": "",
  "maxResults": 10,
  "priceComps": false,
  "aiGearSummary": false
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "query": [
        "stratocaster"
    ],
    "maxResults": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapers_lat/reverb-music-gear-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "query": ["stratocaster"],
    "maxResults": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("scrapers_lat/reverb-music-gear-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "query": [
    "stratocaster"
  ],
  "maxResults": 10
}' |
apify call scrapers_lat/reverb-music-gear-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapers_lat/reverb-music-gear-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/UcKmS0CQcsxlcEcLC/builds/EHyj578OfbjtVqe62/openapi.json
