# Guitar Center Scraper (`crawlerbros/guitar-center-scraper`) Actor

Scrape Guitar Center's musical instrument catalog. Browse by department (guitars, amps, drums, keyboards, and more), New Arrivals, Deals, or Used Gear. Get price, brand, condition, ratings, stock, and full product details.

- **URL**: https://apify.com/crawlerbros/guitar-center-scraper.md
- **Developed by:** [Crawler Bros](https://apify.com/crawlerbros) (community)
- **Categories:** E-commerce, Automation, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
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

## Guitar Center Scraper

Scrape Guitar Center's musical instrument catalog. Browse by department (guitars, amps, drums, keyboards, DJ gear, and more), New Arrivals, Deals, or Used Gear — or fetch specific products by their page URL. Get price, brand, condition, review ratings, in-stock stores, and full product details (description, features, specifications, images).

### What this actor does

- **Three modes:** `browse` (department/category listing), `search` (free-text keyword search), and `byUrl` (exact product lookup)
- **17 departments and special sections:** Guitars, Amps & Effects, Keyboards & MIDI, Drums & Percussion, DJ Equipment, Bass, Recording Gear, Live Sound, Accessories, Microphones & Wireless, Music Software, Lighting & Stage Effects, Band & Orchestra, New Arrivals, All Deals, Used Gear, Daily Pick
- **Filters:** brand, price range, condition (New/Used), used condition grade, minimum rating
- **Optional full-detail enrichment:** description, features, specifications, breadcrumb categories, full-size images
- **Empty fields are omitted** — every field in a record is real, populated data

### Output per product

- `skuId`, `productId` — internal identifiers
- `title`, `color`
- `brand`
- `price`, `listPrice`, `onSale`, `discountAmount`
- `condition` (New / Used), `conditionGrade` (Used items: Excellent/Great/Good/Fair/Poor)
- `rating` (out of 10), `reviewCount`
- `itemNumber`, `partNumber`, `upc`
- `productUrl` — canonical Guitar Center product page
- `imageUrl` *(+ `imageUrlMedium`, `imageUrlThumbnail` with full details)*
- `storesInStock[]`, `storeCount`, `storeName` — physical store availability
- `inStoreOnly` — true if this SKU is not available for online purchase (store-only)
- `promoTags[]` — e.g. "Price Drop"
- `monthlyPayment`, `financingMonths` — Easy Pay financing terms
- `quickSpecs` — flat spec summary available on most listings without `fetchFullDetails`
- `quickFeatures` — short feature highlights available on most listings without `fetchFullDetails`
- `variants[]`, `variantCount` — other colors/conditions of this same product (each with `skuId`, `title`, `condition`, `price`, `productUrl`, `imageUrl`)
- `description`, `features[]`, `specifications[]` *(requires `fetchFullDetails`)*
- `breadcrumbCategories[]`, `categoryName` *(requires `fetchFullDetails`)*
- `inStock` *(requires `fetchFullDetails`)*
- `relatedArticles[]` *(requires `fetchFullDetails`)*
- `recordType: "product"`, `scrapedAt`

### Input

| Field | Type | Default | Description |
|---|---|---|---|
| `mode` | string | `browse` | `browse` / `search` / `byUrl` |
| `category` | select | `Guitars` | Department/section to browse (mode=browse) |
| `searchQuery` | string | – | Free-text keyword search (mode=search), e.g. `Fender Player` |
| `productUrls` | array | – | Exact product page URLs (mode=byUrl) |
| `brand` | string | – | Filter to an exact brand (case-insensitive) |
| `minPrice` / `maxPrice` | integer | – | USD price range |
| `condition` | select | – | New / Used |
| `conditionGrade` | select | – | Excellent / Great / Good / Fair / Poor (Used items) |
| `minRating` | integer | – | Minimum average rating (0-10) |
| `sortBy` | select | `relevance` | Sort the collected batch: relevance / price asc / price desc / rating desc / name A-Z |
| `fetchFullDetails` | boolean | `false` | Fetch each product's detail page for description/specs/images |
| `maxItems` | integer | `50` | Hard cap on emitted records (1-1000) |

### Example input

```json
{
  "mode": "browse",
  "category": "Guitars",
  "brand": "Fender",
  "condition": "New",
  "maxPrice": 1000,
  "maxItems": 50
}
```

```json
{
  "mode": "search",
  "searchQuery": "Fender Player",
  "maxItems": 24
}
```

```json
{
  "mode": "byUrl",
  "productUrls": [
    "https://www.guitarcenter.com/Ibanez/GRX70QA-Electric-Guitar-Transparent-Blue-Burst-1313248770709.gc"
  ]
}
```

### Use cases

- **Price monitoring** — track pricing and deals across Guitar Center's catalog.
- **Market research** — analyze brand/category coverage, average ratings, and used-gear pricing.
- **Inventory intelligence** — check which physical stores carry a given product.
- **Competitive analysis** — compare specs, features, and pricing against your own catalog.

### Data source

guitarcenter.com's product pages are server-rendered (Next.js) with a complete product-search dataset embedded in every category and product page. The actor reads that same server-rendered data. Image and media URLs are served from Guitar Center's CDN domains and are directly accessible.

**Note on site access:** guitarcenter.com's own domain actively blocks automated/datacenter traffic at the network edge (a standard e-commerce anti-bot measure). This actor retrieves the identical server-rendered page content through a mirrored fetch that is not subject to that block, so data returned is byte-for-byte the same live catalog data a shopper's browser would see. `productUrl` values are the real, canonical Guitar Center product URLs — they work normally in any regular web browser.

### FAQ

**Why is `brand` a free-text field instead of a dropdown?** Guitar Center carries several hundred brands across all departments — too many for a clean dropdown. Enter the exact brand name as shown on the site (e.g. `Fender`, `Ibanez`, `Yamaha`).

**Does `sortBy` sort the entire catalog or just what I fetched?** It sorts the batch of records collected in this run (up to `maxItems`). Guitar Center's site does not expose a server-side sort parameter, so a full-catalog sort isn't available — combine a narrower category/filter with a higher `maxItems` for a more complete sorted view.

**Why is `rating` out of 10, not 5?** Guitar Center's own review widget rates products on a 0-10 scale.

**Can I search by free-text keyword?** Yes — use `mode: "search"` with a `searchQuery`. Note that Guitar Center's search endpoint only returns a single results page (up to ~24-45 best matches depending on match quality); it doesn't support paging through the full result set the way `browse` mode does. For exhaustive coverage of a topic, combine `category` + filters (brand, price, condition) instead.

# Actor input Schema

## `mode` (type: `string`):

What to fetch.

## `searchQuery` (type: `string`):

Free-text keyword search, e.g. `Fender Player`, `reverb pedal`, `Ludwig snare`. Guitar Center's search endpoint returns a single results page (up to ~24-45 best matches depending on match quality) — it does not support paging through the full result set.

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

Department or special section to browse.

## `productUrls` (type: `array`):

Exact Guitar Center product page URLs, e.g. `https://www.guitarcenter.com/Ibanez/GRX70QA-Electric-Guitar-Transparent-Blue-Burst-1313248770709.gc`.

## `brand` (type: `string`):

Filter to an exact brand name (e.g. `Fender`, `Ibanez`, `Yamaha`). Case-insensitive exact match.

## `minPrice` (type: `integer`):

Drop products priced below this.

## `maxPrice` (type: `integer`):

Drop products priced above this.

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

Filter to New or Used items.

## `conditionGrade` (type: `string`):

Filter Used items to a specific grade.

## `minRating` (type: `integer`):

Drop products with an average review rating below this (Guitar Center rates out of 10).

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

Sort order applied to the fetched batch of results (the site does not support server-side sorting via URL, so this re-orders what was collected in this run).

## `fetchFullDetails` (type: `boolean`):

For mode=browse: fetch each product's detail page for description, features, specifications, breadcrumb categories, and full-size images. Uses 1 extra request per product; disable for a faster, lighter run. Always on for mode=byUrl.

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

Hard cap on emitted records.

## Actor input object example

```json
{
  "mode": "browse",
  "category": "Guitars",
  "productUrls": [],
  "condition": "",
  "conditionGrade": "",
  "sortBy": "relevance",
  "fetchFullDetails": false,
  "maxItems": 50
}
```

# Actor output Schema

## `products` (type: `string`):

Dataset containing all scraped Guitar Center products.

# 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 = {
    "mode": "browse",
    "category": "Guitars",
    "productUrls": [],
    "condition": "",
    "conditionGrade": "",
    "sortBy": "relevance",
    "fetchFullDetails": false,
    "maxItems": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawlerbros/guitar-center-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 = {
    "mode": "browse",
    "category": "Guitars",
    "productUrls": [],
    "condition": "",
    "conditionGrade": "",
    "sortBy": "relevance",
    "fetchFullDetails": False,
    "maxItems": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("crawlerbros/guitar-center-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 '{
  "mode": "browse",
  "category": "Guitars",
  "productUrls": [],
  "condition": "",
  "conditionGrade": "",
  "sortBy": "relevance",
  "fetchFullDetails": false,
  "maxItems": 50
}' |
apify call crawlerbros/guitar-center-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,crawlerbros/guitar-center-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/x90KeMyxeRMZUNSub/builds/dXZjUyWRDRfus7T7h/openapi.json
