{
  "openapi": "3.0.1",
  "info": {
    "title": "Reverb Music Gear and Sold Price Guide Scraper",
    "description": "Scrape reverb.com music gear: guitars, amps, synths, pedals, drums and pro audio. Search live listings by brand, category, condition, price, year, region and shipping, or paste links. Uniquely returns the sold Price Guide per gear model: median, low, high and quartile realised prices.",
    "version": "1.0",
    "x-build-id": "uU95hIfH1ppLRjcpJ"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/abotapi~reverb-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-abotapi-reverb-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/abotapi~reverb-scraper/runs": {
      "post": {
        "operationId": "runs-sync-abotapi-reverb-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/abotapi~reverb-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-abotapi-reverb-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "required": [
          "mode"
        ],
        "properties": {
          "mode": {
            "title": "Mode",
            "enum": [
              "search",
              "price-guide",
              "url"
            ],
            "type": "string",
            "description": "Choose 'search' for keyword search across live listings with filters, 'price-guide' to look up gear models and their realised sale prices (median, range, per condition, over time), or 'url' to scrape pasted links.",
            "default": "search"
          },
          "queries": {
            "title": "Search keywords",
            "type": "array",
            "description": "One or more keywords. In search mode each keyword returns live listings; in Price Guide mode each keyword returns matching gear models with their sold-price statistics. Examples: 'Fender Stratocaster', 'Moog Subsequent 37', 'Shure SM57'.",
            "items": {
              "type": "string"
            }
          },
          "urls": {
            "title": "Reverb links or listing ids",
            "type": "array",
            "description": "Mix freely: item links (reverb.com/item/<id>), Price Guide or product links (reverb.com/price-guide/<slug> or reverb.com/p/<slug>), shop links (reverb.com/shop/<slug>), brand links (reverb.com/brand/<slug>), marketplace search links (reverb.com/marketplace?query=...), or bare listing ids. A link that is not one of these is reported and skipped rather than guessed at.",
            "items": {
              "type": "string"
            }
          },
          "make": {
            "title": "Brand",
            "type": "string",
            "description": "Only return gear from this brand, for example 'Fender', 'Gibson', 'Moog' or 'Shure'. Applies to search mode and Price Guide mode."
          },
          "category": {
            "title": "Category",
            "enum": [
              "",
              "accessories",
              "acoustic-guitars",
              "amps",
              "band-and-orchestra",
              "bass-guitars",
              "dj-and-lighting-gear",
              "drums-and-percussion",
              "effects-and-pedals",
              "electric-guitars",
              "folk-instruments",
              "home-audio",
              "keyboards-and-synths",
              "parts",
              "pro-audio"
            ],
            "type": "string",
            "description": "Only return gear in this top-level category. Applies to search mode and Price Guide mode. The source also relevance-matches nearby categories into its own results, so in search mode the actor additionally checks each listing's own category and drops the ones that do not belong.",
            "default": ""
          },
          "minYear": {
            "title": "Earliest year",
            "minimum": 1900,
            "maximum": 2100,
            "type": "integer",
            "description": "Only return gear made in this year or later. Applies to search mode and Price Guide mode. Useful with the latest year for vintage windows, for example 1950 to 1969."
          },
          "maxYear": {
            "title": "Latest year",
            "minimum": 1900,
            "maximum": 2100,
            "type": "integer",
            "description": "Only return gear made in this year or earlier. Applies to search mode and Price Guide mode."
          },
          "conditions": {
            "title": "Condition (search mode)",
            "type": "array",
            "description": "Only return listings in these conditions. Pick several to combine them. Search mode only. Note the source answers an unknown condition with the WHOLE catalogue rather than an error, so a value it does not recognise stops the run instead of quietly returning everything.",
            "items": {
              "type": "string",
              "enum": [
                "new",
                "b-stock",
                "used",
                "mint",
                "excellent",
                "very-good",
                "good",
                "fair",
                "poor",
                "non-functioning"
              ],
              "enumTitles": [
                "Brand New",
                "B-Stock",
                "Used (any)",
                "Mint",
                "Excellent",
                "Very Good",
                "Good",
                "Fair",
                "Poor",
                "Non Functioning"
              ]
            },
            "default": []
          },
          "minPrice": {
            "title": "Minimum price (USD, search mode)",
            "minimum": 0,
            "type": "integer",
            "description": "Only return listings priced at or above this amount, in US dollars. Search mode only. The window is also re-checked against each listing's reported US dollar price, because the source applies it to the seller's own currency."
          },
          "maxPrice": {
            "title": "Maximum price (USD, search mode)",
            "minimum": 0,
            "type": "integer",
            "description": "Only return listings priced at or below this amount, in US dollars. Search mode only. The window is also re-checked against each listing's reported US dollar price, because the source applies it to the seller's own currency."
          },
          "itemRegion": {
            "title": "Seller country (search mode)",
            "enum": [
              "",
              "US",
              "CA",
              "GB",
              "DE",
              "FR",
              "IT",
              "ES",
              "NL",
              "SE",
              "JP",
              "AU",
              "NZ",
              "MX",
              "BR"
            ],
            "type": "string",
            "description": "Only return listings whose seller is in this country. Search mode only.",
            "default": ""
          },
          "shipsTo": {
            "title": "Ships to (search mode)",
            "enum": [
              "",
              "US",
              "CA",
              "GB",
              "DE",
              "FR",
              "IT",
              "ES",
              "NL",
              "SE",
              "JP",
              "AU",
              "NZ",
              "MX",
              "BR"
            ],
            "type": "string",
            "description": "Only return listings the seller will ship to this country. Search mode only.",
            "default": ""
          },
          "shopSlug": {
            "title": "Shop (search mode)",
            "type": "string",
            "description": "Only return listings from one shop, given as the shop handle in its address, for example 'guitar-sauce-italy' from reverb.com/shop/guitar-sauce-italy. Search mode only. To sweep a shop without setting a keyword, paste its shop link in URL mode instead."
          },
          "handmadeOnly": {
            "title": "Handmade only (search mode)",
            "type": "boolean",
            "description": "Only return gear the seller has marked as handmade or custom built. Search mode only.",
            "default": false
          },
          "freeShippingOnly": {
            "title": "Free shipping only (search mode)",
            "type": "boolean",
            "description": "Only return listings that ship free. Search mode only. A listing counts as free shipping when it quotes a zero rate to any destination it ships to.",
            "default": false
          },
          "preferredSellersOnly": {
            "title": "Preferred sellers only (search mode)",
            "type": "boolean",
            "description": "Only return listings from sellers the marketplace has marked as preferred. Search mode only.",
            "default": false
          },
          "sortBy": {
            "title": "Sort by (search mode)",
            "enum": [
              "relevance",
              "price-asc",
              "price-desc",
              "newest"
            ],
            "type": "string",
            "description": "Ordering asked of the source for a keyword search. Search mode only. Only orderings the source actually honours are offered here.",
            "default": "relevance"
          },
          "includeSoldPriceGuide": {
            "title": "Include the sold Price Guide",
            "type": "boolean",
            "description": "Attach what this gear has actually SOLD for: median, low, high, quartiles, a breakdown per condition, the average gap between asking and realised price, the recent individual sales, and a period-by-period history. In search and URL modes it also scores each live listing against that history (below market, at market, above market). Turn off for the cheapest run: Price Guide records then keep only the live-market snapshot (how many are listed used and new, and the lowest asking price).",
            "default": true
          },
          "fetchDetails": {
            "title": "Read each listing's own item page",
            "type": "boolean",
            "description": "Adds view and watcher counts, seller location, shipping and return policies, barcode, videos and accepted payment methods to every listing. Off by default because the result page already carries title, brand, model, year, finish, condition, price, seller and photos. Turning on the Price Guide above reads the item page too, so switching this on as well costs nothing extra.",
            "default": false
          },
          "maxItems": {
            "title": "Max results",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum number of results returned across the whole run. This is the run's cap. Use 0 for unlimited.",
            "default": 20
          },
          "maxPages": {
            "title": "Max pages per keyword or link",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum result pages walked per keyword or link, at 50 results a page. 0 means no page limit: the run then stops only at Max results, or when the source runs out of results.",
            "default": 0
          },
          "resumeFromRunId": {
            "title": "Resume from a previous run",
            "type": "string",
            "description": "Paste a previous run id or dataset id to continue a large crawl without returning, or charging for, results already collected there. Use this after an interrupted run. For recurring daily monitoring of the same search, use Incremental mode below instead."
          },
          "incrementalMode": {
            "title": "Incremental changes for scheduled runs",
            "type": "boolean",
            "description": "Turn this on for daily or recurring monitoring. The first run returns everything matching as NEW. Later runs normally return only NEW, UPDATED and REAPPEARED results, which is how you catch a price drop or a fresh listing of a model you watch. State is kept separately for each mode, keyword set and filter setup, so two different searches never mix.",
            "default": false
          },
          "stateKey": {
            "title": "State key (optional, incremental mode only)",
            "type": "string",
            "description": "Optional. Name this monitoring campaign to keep its state stable, or to deliberately share state across differently configured runs. Leave empty to let the actor derive a key from the mode, keywords, links and filters."
          },
          "emitUnchanged": {
            "title": "Emit unchanged results (incremental mode only)",
            "type": "boolean",
            "description": "Off by default. Turn on to also return results that have not changed since the last run, marked UNCHANGED. This returns, and bills, extra rows you already have, so leave it off unless you want the full snapshot every run.",
            "default": false
          },
          "emitExpired": {
            "title": "Emit expired results (incremental mode only)",
            "type": "boolean",
            "description": "Off by default. Turn on to also return results that were present in a previous run but are no longer found, marked EXPIRED, which is how a listing selling or being withdrawn shows up. Only produced once a run has fully scanned the tracked search, never when Max results capped it or Resume was used. This returns, and bills, extra rows.",
            "default": false
          },
          "proxy": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify Proxy is recommended. Leave the default selected unless a run reports that requests were refused.",
            "default": {
              "useApifyProxy": true
            }
          },
          "mcpConnectors": {
            "title": "Pipe results into your apps (optional)",
            "type": "array",
            "description": "Optionally send results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize one under Apify, Settings, API and Integrations, then select it here. Notion gets a rich page per item; other connectors get a best-effort write or digest. Leave empty to skip; this never changes the dataset output. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com)."
          },
          "notionParentPageUrl": {
            "title": "Notion parent page (Notion connector only)",
            "type": "string",
            "description": "URL or id of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors."
          },
          "maxNotifyListings": {
            "title": "Max items to export per connector",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Cap on items written to each connector per run. Does not affect the dataset.",
            "default": 50
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}