# Reverb Listing Scraper (`parseforge/reverb-listing-scraper`) Actor

Scrape Reverb musical gear listings with price, condition, seller location, views, watchers and full photo galleries. Export to CSV, Excel, JSON or XML.

- **URL**: https://apify.com/parseforge/reverb-listing-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** E-commerce, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.66 / 1,000 results

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/actors/running/actors-in-store.md#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

![ParseForge Banner](https://github.com/ParseForge/apify-assets/blob/ad35ccc13ddd068b9d6cba33f323962e39aed5b2/banner.jpg?raw=true)

## 🎸 Reverb Listing Scraper

> 🚀 **Export live Reverb gear listings in seconds.** 42 fields per listing, including the view count, the watcher count and the seller's city, pulled from 2.6 million live listings across 14 gear categories.

Reverb is the largest marketplace for musical instruments and audio gear, and every live listing on it carries far more than a price. This Actor reads Reverb's own public listing API, then opens each listing's full record to collect what the search results page never shows you: how many people have viewed it, how many are watching it, how many offers are already on the table, where the shop actually sits, and the complete photo gallery.

Search by keyword, by category, by brand, by condition, by build year, by price band or by seller country. Feed it a list of listing URLs instead and it enriches each one. Every run returns a flat table you can drop straight into a spreadsheet, a price model or a database. One search term reaches up to 20,000 listings, and the marketplace-wide feed covers more than 2.6 million live items.

| 🎯 Target Audience | 💡 Primary Use Cases |
| --- | --- |
| Gear dealers and resellers | Track competitor asking prices and price drops across a category |
| Instrument collectors | Watch a specific make, model and build year for new arrivals |
| Repair shops and luthiers | Find project instruments by condition band and price ceiling |
| Market analysts | Build a price index for guitars, synths, pedals or pro audio |
| Insurers and appraisers | Evidence current market asking prices for a specific model |
| E-commerce teams | Benchmark shipping costs, offer acceptance and seller ratings |

### 📋 What the Reverb Listing Scraper does

> 💡 **Why it matters:** a listing's asking price tells you what a seller hopes for. Its view count, watcher count and open offer count tell you whether the market agrees. This Actor gives you all four in the same row.

- Searches Reverb's live listing index by keyword, category, brand, condition, year range, price range and seller country.
- Opens the full record for every listing it delivers, so each row carries the seller's city, region and country.
- Reports engagement that the search page hides: view count, watcher count and the number of live offers.
- Captures the price, the original price and the price drop percentage together, so discounts are visible at a glance.
- Returns the shipping rate and the region it applies to, plus free shipping and local pickup flags.
- Extracts make, model, build year, finish, category, inventory count and country of origin.
- Records seller trust signals: shop name, shop URL, Preferred Seller badge, feedback count and rating percentage.
- Collects the entire photo gallery, not just the thumbnail.
- Dedupes on the Reverb listing id, so a listing never appears twice in one run.
- Accepts listing URLs directly, so you can enrich a shortlist you already have.

### 🎬 Full Demo (🚧 Coming soon)

### 📊 Output

Every row is one live Reverb listing.

| Field | Type | Description |
| --- | --- | --- |
| 🖼 `imageUrl` | string | Primary listing photo |
| 📌 `title` | string | Listing title as the seller wrote it |
| 🔗 `listingUrl` | string | Public Reverb listing page |
| 🆔 `listingId` | string | Reverb listing id, the dedupe key |
| 📶 `listingState` | string | Listing state, for example Live |
| 💵 `price` | number | Asking price as a number |
| 💱 `currency` | string | Currency code of the asking price |
| 🏷 `priceDisplay` | string | Price formatted the way Reverb shows it |
| 📉 `originalPrice` | number | Price before the most recent drop |
| 🔻 `priceDropPercent` | number | Size of the drop in percent |
| 📦 `shippingPrice` | number | Shipping rate for the first listed region |
| 🌍 `shippingRegion` | string | Region code that rate applies to |
| 🚚 `freeExpeditedShipping` | string | Yes or No |
| 🏠 `localPickupOnly` | string | Yes or No |
| ⭐ `condition` | string | Condition grade, for example Excellent |
| 🏭 `make` | string | Brand |
| 🎼 `model` | string | Model name |
| 📅 `year` | string | Build year |
| 🎨 `finish` | string | Finish or colour |
| 🗂 `category` | string | Full Reverb category path |
| 📊 `inventory` | number | Units the seller holds |
| 🤝 `offersEnabled` | string | Yes or No |
| 🔨 `handmade` | string | Yes or No |
| ⚠️ `soldAsIs` | string | Yes or No |
| 🌐 `originCountryCode` | string | Country the instrument was built in |
| 🏪 `shopName` | string | Seller shop name |
| 🛒 `shopUrl` | string | Public shop page |
| 📍 `shopLocation` | string | City, region and country of the shop |
| 🏳 `shopCountryCode` | string | Two letter country code |
| ✅ `preferredSeller` | string | Yes or No |
| 💬 `shopFeedbackCount` | number | Number of feedback entries |
| 📈 `shopRatingPercent` | number | Positive feedback percentage |
| 👀 `views` | number | Times the listing has been viewed |
| ❤️ `watchers` | number | People watching the listing |
| 📨 `offerCount` | number | Offers currently on the listing |
| 📝 `description` | string | Seller description, HTML stripped |
| 🕰 `listedAt` | string | When the listing was created |
| 🗓 `publishedAt` | string | When the listing went live |
| 💳 `paymentMethods` | array | Accepted payment methods |
| 🖼 `photoUrls` | array | Every photo on the listing |
| 🕒 `scrapedAt` | string | Extraction timestamp |
| ❌ `error` | string | Populated only on a failed request |

Three real records from a run of this Actor (descriptions and galleries trimmed for length):

```json
[
  {
    "imageUrl": "https://rvb-img.reverb.com/i/s--Q-ASirbD--/quality=medium-low,height=800,width=800,fit=contain/bidu1sqa6uoirymlclak.jpg",
    "title": "Used Fender Stratocaster California - Fiesta Red",
    "listingUrl": "https://reverb.com/item/88453523-used-fender-stratocaster-california-fiesta-red",
    "listingId": "88453523",
    "listingState": "Live",
    "price": 1199,
    "currency": "USD",
    "priceDisplay": "$1,199",
    "originalPrice": 1449.99,
    "priceDropPercent": 18,
    "shippingPrice": 69,
    "shippingRegion": "US_CON",
    "freeExpeditedShipping": "No",
    "localPickupOnly": "No",
    "condition": "Very Good",
    "make": "Fender",
    "model": "Fender Stratocaster California - Fiesta Red",
    "year": "Not Disclosed",
    "finish": "Fiesta Red",
    "category": "Electric Guitars / Solid Body",
    "inventory": 1,
    "offersEnabled": "Yes",
    "handmade": "No",
    "soldAsIs": "No",
    "originCountryCode": "Not Disclosed",
    "shopName": "Pladd Dot Music",
    "shopUrl": "https://reverb.com/shop/pladd-dot-music",
    "shopLocation": "Statesboro, GA, United States",
    "shopCountryCode": "US",
    "preferredSeller": "No",
    "shopFeedbackCount": 48,
    "shopRatingPercent": 99.6,
    "views": 1867,
    "watchers": 55,
    "offerCount": 1,
    "description": "Used Fender Stratocaster California - Fiesta Red",
    "listedAt": "2025-03-29T09:26:50-05:00",
    "publishedAt": "2025-03-29T09:26:53-05:00",
    "paymentMethods": ["direct_checkout", "paypal", "paypal_pay_later"],
    "photoUrls": [
      "https://rvb-img.reverb.com/i/s--Q-ASirbD--/quality=medium-low,height=800,width=800,fit=contain/bidu1sqa6uoirymlclak.jpg",
      "https://rvb-img.reverb.com/i/s--51qSjP8U--/quality=medium-low,height=800,width=800,fit=contain/lbedq53jiykonwmuuij7.jpg"
    ],
    "scrapedAt": "2026-09-08T05:29:09.252Z",
    "error": null
  },
  {
    "imageUrl": "https://rvb-img.reverb.com/i/s--QDJcuY2k--/quality=medium-low,height=800,width=800,fit=contain/8ba7520b-7ddf-4c81-bb23-2f1df9689d60.jpg",
    "title": "Fender Fender Stratocaster w/Pau Ferro Neck MIM Stratocaster 2019 Sunburst 2019 - Sunburst",
    "listingUrl": "https://reverb.com/item/98036091-fender-fender-stratocaster-w-pau-ferro-neck-mim-stratocaster-2019-sunburst-2019-sunburst",
    "listingId": "98036091",
    "listingState": "Live",
    "price": 575,
    "currency": "USD",
    "priceDisplay": "$575",
    "originalPrice": 800,
    "priceDropPercent": 29,
    "shippingPrice": 85,
    "shippingRegion": "US_CON",
    "freeExpeditedShipping": "No",
    "localPickupOnly": "No",
    "condition": "Excellent",
    "make": "Fender",
    "model": "Fender Stratocaster w/Pau Ferro Neck MIM Stratocaster 2019 Sunburst",
    "year": "2019",
    "finish": "Sunburst",
    "category": "Electric Guitars / Solid Body",
    "inventory": 1,
    "offersEnabled": "Yes",
    "handmade": "No",
    "soldAsIs": "Yes",
    "originCountryCode": "MX",
    "shopName": "Darren's Gear Emporium",
    "shopUrl": "https://reverb.com/shop/darrens-gear-emporium-307",
    "shopLocation": "Myrtle Beach, SC, United States",
    "shopCountryCode": "US",
    "preferredSeller": "No",
    "shopFeedbackCount": 5,
    "shopRatingPercent": 100,
    "views": 473,
    "watchers": 6,
    "offerCount": 1,
    "description": "Fender Stratocaster w/Pau Ferro Neck MIM Stratocaster 2019- Sunburst Professionaly gone over & set up with new strings, gig bag included. No scratches or blemishes!",
    "listedAt": "2026-06-09T14:29:24-05:00",
    "publishedAt": "2026-06-09T14:33:54-05:00",
    "paymentMethods": ["direct_checkout", "paypal", "paypal_pay_later"],
    "photoUrls": [
      "https://rvb-img.reverb.com/i/s--QDJcuY2k--/quality=medium-low,height=800,width=800,fit=contain/8ba7520b-7ddf-4c81-bb23-2f1df9689d60.jpg",
      "https://rvb-img.reverb.com/i/s--0rtngGuT--/quality=medium-low,height=800,width=800,fit=contain/70eb2d8c-70c2-41cc-8137-087d08ec8623.jpg"
    ],
    "scrapedAt": "2026-09-08T05:29:09.264Z",
    "error": null
  },
  {
    "imageUrl": "https://rvb-img.reverb.com/i/s--hsXhkMVe--/quality=medium-low,height=800,width=800,fit=contain/ef40ef2f-c3ce-4fb6-914d-c20af4eb47d2.jpg",
    "title": "Fender Fender Stratocaster with Orig early 90's Eric Clapton Model Electronic 2000 - Red",
    "listingUrl": "https://reverb.com/item/99580863-fender-fender-stratocaster-with-orig-early-90-s-eric-clapton-model-electronic-2000-red",
    "listingId": "99580863",
    "listingState": "Live",
    "price": 944.88,
    "currency": "USD",
    "priceDisplay": "$944.88",
    "originalPrice": "N/A",
    "priceDropPercent": "N/A",
    "shippingPrice": 50.11,
    "shippingRegion": "US_CON",
    "freeExpeditedShipping": "No",
    "localPickupOnly": "No",
    "condition": "Excellent",
    "make": "Fender",
    "model": "Fender Stratocaster with Orig early 90's Eric Clapton Model Electronic",
    "year": "2000",
    "finish": "Red",
    "category": "Electric Guitars / Solid Body",
    "inventory": 1,
    "offersEnabled": "No",
    "handmade": "No",
    "soldAsIs": "No",
    "originCountryCode": "Not Disclosed",
    "shopName": "Joe",
    "shopUrl": "https://reverb.com/shop/joes-gear-bazaar-1128",
    "shopLocation": "FAIRPORT, NY, United States",
    "shopCountryCode": "US",
    "preferredSeller": "No",
    "shopFeedbackCount": 24,
    "shopRatingPercent": 100,
    "views": 446,
    "watchers": 12,
    "offerCount": 0,
    "description": "Fender Stratocaster with Original early 90's Eric Clapton Model Electronics : 3 Lace Sensor Gold Pickups TBX Tone Control 24db Mid Range Boost Preamp 2000 MIM Neck",
    "listedAt": "2026-07-21T03:19:08+08:00",
    "publishedAt": "2026-07-21T03:51:54+08:00",
    "paymentMethods": ["direct_checkout", "paypal", "paypal_pay_later"],
    "photoUrls": [
      "https://rvb-img.reverb.com/i/s--hsXhkMVe--/quality=medium-low,height=800,width=800,fit=contain/ef40ef2f-c3ce-4fb6-914d-c20af4eb47d2.jpg",
      "https://rvb-img.reverb.com/i/s--DaEEbhm4--/quality=medium-low,height=800,width=800,fit=contain/4b73c1cb-9115-41b9-9f0b-d6f323d3602f.jpg"
    ],
    "scrapedAt": "2026-09-08T05:29:09.275Z",
    "error": null
  }
]
```

Empty values never come back as null. A field the seller chose not to fill returns `Not Disclosed`, a field that does not apply to the listing returns `N/A`, booleans return `Yes` or `No`, and empty lists return `[]`. Only `error` can be null, and it is null on every successful row.

### ✨ Why choose this Actor

- **Engagement data on every row.** View count, watcher count and open offer count come from the listing's own record. Most Reverb scrapers stop at the search results and never see them.
- **Real seller location.** City, region and country for the shop holding the item, not just a country flag.
- **Price drops made obvious.** Asking price, previous price and drop percentage sit side by side.
- **The whole photo gallery.** Up to every image on the listing, not one thumbnail.
- **Two ways in.** Search the marketplace, or hand it a list of listing URLs to enrich.
- **Honest limits.** Ceilings are documented below rather than discovered after purchase.
- **Clean tables.** Fixed column order, no nulls, ready for CSV, Excel, JSON or XML.

### 📈 How it compares to alternatives

| | This Actor | Typical Reverb search scraper | Manual browsing |
| --- | --- | --- | --- |
| Fields per listing | 42 | 12 to 20 | Whatever the page shows |
| Views and watchers | ✅ | ❌ | ❌ |
| Live offer count | ✅ | ❌ | ❌ |
| Seller city and region | ✅ | Country only | ✅ one at a time |
| Full photo gallery | ✅ | Thumbnail only | ✅ one at a time |
| Price drop percentage | ✅ | Rarely | ✅ one at a time |
| Search filters | 12 verified filters | 2 to 4 | ✅ |
| Enrich a URL list | ✅ | Sometimes | ✅ one at a time |
| Rows per search term | Up to 20,000 | Varies | Realistically dozens |
| Sold and ended listings | ❌ live listings only | ❌ | ❌ |

### 🚀 How to use

1. Create a free Apify account. New accounts get $5 in free credit: [sign up here](https://console.apify.com/sign-up?fpr=vmoqkp).
2. Open the Reverb Listing Scraper and click **Try for free**.
3. Type one or more search terms, for example `fender stratocaster` or `moog subsequent 37`. You can paste Reverb listing URLs instead, or leave both empty to walk the newest live listings across the whole marketplace.
4. Narrow the search with the filters: category, condition, brand, price range, build year range, seller country, sort order, free shipping, Preferred Sellers, handmade.
5. Set how many rows you want.
6. Click **Start** and watch the run log.
7. When the run finishes, open the **Storage** tab and download CSV, Excel, JSON or XML, or pull the same rows through the Apify API.

### 💼 Business use cases

#### Reselling and arbitrage

Pull every live listing for a model in a price band, sort by view count, and find the items the market has already noticed. A guitar with 1,800 views and 55 watchers at a 18 percent price drop is a different proposition from one nobody has opened.

#### Inventory and price benchmarks

Dealers price against the live market, not last quarter's guide. Run a category weekly, chart asking prices by condition grade, and see where your own stock sits. Shipping cost and free shipping flags let you compare landed prices rather than sticker prices.

#### Lead generation for gear services

Repair shops, case makers and pedal builders can find sellers by category and country, then reach the shops whose inventory matches what they offer. Shop name, shop URL, feedback count and rating come with every row.

#### Collection and appraisal evidence

Insurers and appraisers need current asking prices from a named source. Filter by make, model and build year range, export to Excel, and you have a dated evidence pack with listing URLs behind every figure.

### 🔌 Automating Reverb Listing Scraper

- **Make and Zapier**: trigger the Actor on a schedule and push new rows into a spreadsheet, a CRM or a Slack channel.
- **Slack**: post a message whenever a listing matching your filters appears under a price ceiling.
- **Airbyte**: sync the dataset into a warehouse and join it with your own sales history.
- **GitHub Actions**: run the Actor nightly and commit the CSV so price history builds itself.
- **Google Drive**: drop each run's export into a shared folder for the rest of the team.
- **Apify Scheduler**: run daily, weekly or hourly with no external tooling at all.

### 🌟 Beyond business use cases

- **Research**: study how condition grade, brand and build year move asking prices across a marketplace of millions of items.
- **Personal**: watch for the exact guitar, synth or pedal you have wanted for years, filtered to your country and budget.
- **Non-profit**: music education charities can find instruments in the Fair and Good condition bands within a shipping region.
- **Experimentation**: train a price model on real listings, or test how quickly a price drop moves watcher counts.

### 🤖 Ask an AI assistant about this scraper

Paste this into ChatGPT, Claude or any assistant you use:

> I am using the Reverb Listing Scraper on Apify. It returns 42 fields per live Reverb listing, including price, originalPrice, priceDropPercent, condition, make, model, year, finish, shopName, shopLocation, shopRatingPercent, views, watchers, offerCount and photoUrls. Help me design a filter set and an analysis that finds underpriced vintage guitars in my country.

### ❓ Frequently Asked Questions

#### 🔑 Do I need a Reverb account or API key?

No. The Actor reads Reverb's public listing API, which answers without any credential.

#### 📦 How many listings can one search term return?

Up to 20,000. Reverb serves 50 results per page and refuses any request whose page offset passes 20,000. Split larger jobs across several terms, categories, price bands or seller countries.

#### 💀 Can it scrape sold or ended listings?

No. The public listing endpoint serves live listings only. Sold price history is a different surface and is not covered here.

#### 📍 How precise is the seller location?

City, region and country, exactly as Reverb publishes it. Street addresses are never public.

#### 👀 Where do the view and watcher counts come from?

From the listing's own public record. That is why the Actor opens each listing rather than stopping at the search results.

#### 🖼 Do I get every photo?

Yes. `photoUrls` carries the full gallery in listing order and `imageUrl` repeats the first one for convenience.

#### 🌍 Can I filter by seller country?

Yes. Fourteen countries are available: United States, United Kingdom, Canada, Germany, France, Italy, Spain, Netherlands, Japan, Australia, Sweden, Belgium, Austria and Switzerland.

#### 💱 Are all prices in the same currency?

No. Each row carries the listing's own `currency` alongside `price`, because Reverb sellers list in USD, EUR, GBP, CAD, JPY and others. Convert on your side if you need one unit.

#### 🔁 Can the same listing appear twice?

No. Rows are deduplicated on the Reverb listing id within a run.

#### 🔗 Can I feed it my own list of listings?

Yes. Paste Reverb listing URLs into the Listing URLs field and every one is enriched with the full record.

#### ⚡ How fast is it?

The public API answers in well under a second per call from a clean IP, and the Actor runs six detail requests in parallel. A 1,000 row run typically finishes in a few minutes.

#### 🌐 Do I need a proxy?

No. The source answers direct requests, so the proxy is off by default. Turn it on for very large or long-running jobs.

#### 🧹 Why do I see "Not Disclosed" and "N/A" instead of empty cells?

Because a blank cell hides why it is blank. `Not Disclosed` means the seller left the field empty, `N/A` means the field does not apply to that listing. Neither is ever a null.

### 🔌 Integrate with any app

Every run writes to an Apify dataset you can read over the REST API, stream into a webhook, or export as CSV, Excel, JSON or XML. Apify's integrations cover Make, Zapier, Airbyte, Slack, Google Drive, GitHub, Google Sheets and plain HTTP webhooks, so the rows land wherever your team already works.

### 🔗 Recommended Actors

- [Reverb Musical Instruments Scraper](https://apify.com/parseforge/reverb-com-scraper) for fast bulk search rows when you do not need the per listing detail.
- [Google Shopping Prices Scraper](https://apify.com/parseforge/google-shopping-prices-scraper) to compare marketplace asking prices against retail.
- [Home Depot Products Scraper](https://apify.com/parseforge/home-depot-products-scraper) for the same flat table treatment on a very different catalogue.
- [Albertsons Products Scraper](https://apify.com/parseforge/albertsons-products-scraper) if you want to see how the ParseForge row contract behaves on grocery data.

> 💡 **Pro Tip:** browse the complete [ParseForge collection](https://apify.com/parseforge).

**🆘 Need Help?** [Open our contact form](https://tally.so/r/BzdKgA)

> **⚠️ Disclaimer:** This is an independent tool and is not affiliated with, endorsed by, or connected to Reverb.com LLC. It collects only publicly available data.

# Actor input Schema

## `searchTerms` (type: `array`):

Keywords searched against Reverb's live listing index, for example 'fender stratocaster' or 'moog subsequent 37'. One search runs per term.

## `startUrls` (type: `array`):

Reverb listing page URLs such as https://reverb.com/item/98036091-fender-stratocaster. Each URL is enriched with the full detail record.

## `maxItems` (type: `integer`):

Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000

## `productType` (type: `string`):

Restrict the search to one top-level Reverb category.

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

Keep only listings in the selected condition band.

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

Brand name as Reverb spells it, for example Gibson, Fender, Roland or Shure.

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

Lowest listing price to keep, in the listing's own currency.

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

Highest listing price to keep, in the listing's own currency.

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

Oldest build year to keep, for example 1959.

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

Newest build year to keep, for example 1965.

## `itemRegion` (type: `string`):

Keep only listings held by sellers in this country.

## `sortBy` (type: `string`):

Order the search results before the result limit is applied. Leave empty for Reverb's relevance ranking.

## `freeShippingOnly` (type: `boolean`):

Keep only listings that ship free.

## `preferredSellerOnly` (type: `boolean`):

Keep only listings from shops Reverb marks as Preferred Sellers.

## `handmadeOnly` (type: `boolean`):

Keep only listings flagged as handmade or boutique builds.

## `proxyConfiguration` (type: `object`):

Route requests through Apify Proxy. Off by default because the source is open.

## Actor input object example

```json
{
  "searchTerms": [
    "fender stratocaster"
  ],
  "startUrls": [],
  "maxItems": 10,
  "freeShippingOnly": false,
  "preferredSellerOnly": false,
  "handmadeOnly": false,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `overview` (type: `string`):

Key listing fields in a readable table.

## `fullData` (type: `string`):

Complete dataset with all 42 fields.

# 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 = {
    "searchTerms": [
        "fender stratocaster"
    ],
    "startUrls": [],
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/reverb-listing-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 = {
    "searchTerms": ["fender stratocaster"],
    "startUrls": [],
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("parseforge/reverb-listing-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 '{
  "searchTerms": [
    "fender stratocaster"
  ],
  "startUrls": [],
  "maxItems": 10
}' |
apify call parseforge/reverb-listing-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parseforge/reverb-listing-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/Nx296GMMzntVMpikK/builds/NgC0OmaXk7whqhIqe/openapi.json
