# Andertons Music Gear Scraper (`maximedupre/andertons`) Actor

Search Andertons by product term or category page. Save listings with current prices, availability, product links, and other details shown by the store.

- **URL**: https://apify.com/maximedupre/andertons.md
- **Developed by:** [Maxime Dupré](https://apify.com/maximedupre) (community)
- **Categories:** E-commerce, Business, Developer tools
- **Stats:** 2 total users, 1 monthly users, 76.5% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$0.45 / 1,000 product listings

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### 🎸 Find current Andertons product listings

For music gear researchers and catalog teams, this Actor finds public Andertons product listings by search term or category page. It returns product names, current displayed prices, availability, product links, and other available details in structured dataset rows for price and product research.

**Use cases**

- Check electric guitar prices with **[Electric Guitar Prices](https://apify.com/maximedupre/andertons/examples/electric-guitar-prices)**.
- Browse listings from guitar category pages with **[Guitar Category Products](https://apify.com/maximedupre/andertons/examples/guitar-category-products)**.
- Find Andertons products for a **[Sire S7 Review](https://apify.com/maximedupre/andertons/examples/sire-s7-review)**.
- Look up the **[Sire S7 New Gen](https://apify.com/maximedupre/andertons/examples/sire-s7-new-gen)** at Andertons.
- Search Andertons for **[Sire Guitars](https://apify.com/maximedupre/andertons/examples/sire-guitars)**.

#### 📋 Product details in each Andertons row

Each saved row includes a product name, current price and currency, availability, product page link, and observation time. When available, it can also include the brand, product IDs, department, category, original price, VAT detail, image link, customer reviews, and specifications.

#### ▶️ Search Andertons products

Choose Search terms to look for products, or Category pages to browse their listings. Add values to the matching section; the other list is ignored. Set Maximum products to stop after a chosen number of successfully read and validated listings. Leave it empty to return all available results until the source is exhausted. Turn on Include reviews to fetch available Feefo ratings and review counts. Review lookups can add substantial time on large catalogs.

#### ⚙️ Input

Use one search method for each run, then fill in its matching fields.

**Input fields**

| Field | Type | What it does |
| --- | --- | --- |
| `findProductsBy` | string, required | Choose `searchTerms` or `categoryPages`. The other list is ignored. |
| `searchTerms` | array of strings | Add one or more product terms when Search terms is selected. |
| `categoryPages` | array of objects | Add one or more Andertons category page URLs when Category pages is selected. |
| `categoryPages[].url` | string | The Andertons category page URL to browse. |
| `maxProducts` | integer | Stops after this many successfully read and validated listings. It is prefilled with 5 and must be 1 or more when set. Leave it empty to return all available results until the source is exhausted. |
| `includeReviews` | boolean | Fetches available customer ratings and review counts from Feefo when on. Review lookups can add substantial time on large catalogs. |

**Example search input**

A successful search run used these values:

```json
{
  "findProductsBy": "searchTerms",
  "searchTerms": [
    "guitar"
  ],
  "maxProducts": 5,
  "includeReviews": false
}
```

#### 🧾 Output

The run output includes an overview link to the default dataset. Each saved dataset row describes an Andertons product listing that was successfully read and validated with its current displayed price.

**Run output**

| Field | Type | What it does |
| --- | --- | --- |
| `overview` | string (URL) | Opens the run dataset in the overview view. |

**Dataset row fields**

| Field | Type | What it does |
| --- | --- | --- |
| `name` | string | Product name shown by Andertons. |
| `brand` | string | Product brand, when available. |
| `retailerProductId` | string | Product ID assigned by Andertons, when available. |
| `manufacturerProductId` | string | Product ID assigned by the manufacturer, when available. |
| `department` | string | Andertons department for the listing, when available. |
| `category` | string | Andertons category for the listing, when available. |
| `price` | object | Current price and any other price details shown by Andertons. |
| `price.current` | number | Current displayed price. |
| `price.currency` | string | Currency for the current price. |
| `price.original` | number | Original, list, or RRP price, when available. |
| `price.includesVat` | boolean | Whether Andertons says the price includes VAT, when available. |
| `availability` | string | Current availability text shown by Andertons. |
| `productUrl` | string (URL) | Andertons product page. |
| `imageUrl` | string (URL) | Primary product image link, when available. |
| `reviews` | object | Customer rating and review count, when available. |
| `reviews.rating` | number | Customer rating shown by Andertons, when available. |
| `reviews.count` | integer | Number of customer reviews shown by Andertons, when available. |
| `specifications` | array of objects | Product specification names and values, when available. |
| `specifications[].name` | string | Name of one product specification. |
| `specifications[].value` | string | Value of that product specification. |
| `observedAt` | string (date-time) | Time when the listing and current price were read. |

**Example product row**

```json
{
  "name": "Fender Custom Shop Vintage '59 Stratocaster Time Capsule in Candy Apple Red",
  "price": {
    "current": 3899,
    "currency": "GBP",
    "includesVat": true
  },
  "availability": "1 In Stock",
  "productUrl": "https://www.andertons.co.uk/fender-custom-shop-vintage-custom-59-stratocaster-in-candy-apple-red/",
  "observedAt": "2026-10-07T07:56:20.295Z",
  "brand": "Fender",
  "retailerProductId": "62737",
  "department": "Guitar Dept",
  "category": "S Style Electric Guitars",
  "imageUrl": "https://cdn11.bigcommerce.com/s-4hc0jwsnnq/images/stencil/1280x1280/products/62737/446724/R151713%2520%282%29.JPG__07788.1791304992.jpg?c=1",
  "specifications": [
    {
      "name": "Body Body Style",
      "value": "56 Strat"
    },
    {
      "name": "Body Body Wood",
      "value": "2 Piece Alder"
    },
    {
      "name": "Body Body Finish",
      "value": "Flash Coat Time Capsule Nitrocellulose Lacquer"
    },
    {
      "name": "Body Body Colour",
      "value": "Candy Apple Red"
    },
    {
      "name": "Neck Neck Shape",
      "value": "60s Strat"
    },
    {
      "name": "Neck Neck Wood",
      "value": "Maple"
    },
    {
      "name": "Neck Fingerboard",
      "value": "AAA Rosewood"
    },
    {
      "name": "Neck Neck Finish",
      "value": "Flash Coat Medium Tint Nitrocellulose Lacquer"
    },
    {
      "name": "Neck Frets",
      "value": "21 Medium Vintage"
    },
    {
      "name": "Neck Neck Profile",
      "value": "60s Style Oval C"
    },
    {
      "name": "Neck Radius",
      "value": "9.5”"
    },
    {
      "name": "Neck Nut Width",
      "value": "1.650”"
    },
    {
      "name": "Neck Nut",
      "value": "Bone"
    },
    {
      "name": "Neck Dots",
      "value": "Clay"
    },
    {
      "name": "Hardware Bridge",
      "value": "American Vintage"
    },
    {
      "name": "Hardware Tuners",
      "value": "VIntage"
    },
    {
      "name": "Hardware Pickguard",
      "value": "’59 Mint Green"
    },
    {
      "name": "Hardware Hardware",
      "value": "Chrome"
    },
    {
      "name": "Electronics Switch",
      "value": "5-way"
    },
    {
      "name": "Electronics Neck Pickup",
      "value": "Handwound 59 Strat"
    },
    {
      "name": "Electronics Middle Pickup",
      "value": "Handwound 59 Strat"
    },
    {
      "name": "Electronics Bridge Pickup",
      "value": "Handwound Fat 60s"
    },
    {
      "name": "Miscellaneous Strings",
      "value": "10-46"
    },
    {
      "name": "Miscellaneous Case",
      "value": "Brown"
    }
  ]
}
```

#### 💳 Pricing

A charge applies to each Andertons product listing that is successfully read and validated, then returned with its current displayed price. Check the Store pricing panel for the current event rate.

#### 🔌 Integrations

Use the default Apify dataset to view and export your rows. Its API URL is included in the run output.

https://www.youtube.com/watch?v=bNACk1_S_6w\&list=PLObrtcm1Kw6MUrlLNDbK9QRg8VDJg0gOW\&index=4

#### ❓ FAQ

##### Can I search for a phrase such as Sire S7 vintage?

Yes. Enter the phrase in Search terms. Results depend on the Andertons listings available for that search when the run starts.

##### Can I use search terms and category pages in one run?

Choose one method for a run. Add values in its matching section; the other list is ignored.

##### What happens when I leave Maximum products empty?

The Actor returns all available results until the source is exhausted. A set limit stops after that many successfully read and validated listings.

##### Will every row include customer reviews?

No. Turn on Include reviews to fetch available ratings and review counts from Feefo. These fields may be missing when review details are not available.

##### Does the Actor track price changes over time?

Each row includes the current price and the time it was observed. Save datasets from repeat runs to compare prices yourself; the Actor does not make historical comparisons.

### 📝 Changelog

**v0.0** (07-10-2026)

- Initial release.

### 🆘 Support

For issues, questions, or feature requests, [file a ticket](https://console.apify.com/actors/maximedupre~andertons/issues) and I'll fix or implement it in less than 24h 🫡

### 🔗 Related Actors

- [Reverb Sold Listings](https://apify.com/maximedupre/reverb-sold-listings): Review historical sold prices for musical gear.
- [John Lewis Product Scraper](https://apify.com/maximedupre/john-lewis-product-scraper): Collect UK retail product and variant details for product-price research.
- [Amazon Price Tracker](https://apify.com/maximedupre/amazon-price-tracker): Check Amazon product snapshots and compare one product with search matches.
- [Andertons Music Gear Catalog Price Scraper](https://apify.com/jungle_synthesizer/andertons-music-gear-catalog-price-scraper): Review another Andertons music gear catalog for price research.
- [Andertons Music Co Scraper - UK Guitars, Amps & Gear](https://apify.com/lulzasaur/andertons-scraper): Explore another UK-focused Andertons scraper for gear price research.

**Made with ❤️ by Maxime Dupré**

# Actor input Schema

## `findProductsBy` (type: `string`):

Search terms find matching products. Category pages browse their listings.

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

Enter one or more product search terms when this is the selected method. This list is ignored when you choose Category pages.

## `categoryPages` (type: `array`):

Add one or more Andertons category page URLs when this is the selected method. This list is ignored when you choose Search terms.

## `maxProducts` (type: `integer`):

Stop after this many successfully read and validated product listings. Leave it empty to return all available results until the source is exhausted.

## `includeReviews` (type: `boolean`):

Fetch available customer ratings and review counts from Feefo. Review lookups can add substantial time on large catalogs.

## Actor input object example

```json
{
  "findProductsBy": "searchTerms",
  "searchTerms": [
    "guitar"
  ],
  "maxProducts": 5,
  "includeReviews": false
}
```

# Actor output Schema

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

Open product listings in the default dataset.

# 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 = {
    "findProductsBy": "searchTerms",
    "searchTerms": [
        "guitar"
    ],
    "maxProducts": 5
};

// Run the Actor and wait for it to finish
const run = await client.actor("maximedupre/andertons").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 = {
    "findProductsBy": "searchTerms",
    "searchTerms": ["guitar"],
    "maxProducts": 5,
}

# Run the Actor and wait for it to finish
run = client.actor("maximedupre/andertons").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 '{
  "findProductsBy": "searchTerms",
  "searchTerms": [
    "guitar"
  ],
  "maxProducts": 5
}' |
apify call maximedupre/andertons --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,maximedupre/andertons"
        }
    }
}
```

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/GhJl0GnIEkZwSw3SN/builds/PAKokGN5ySVng4Ni6/openapi.json
