# New Balance Product Scraper (`axlymxp/newbalance-product-scraper`) Actor

Scrape New Balance (newbalance.com) products by keyword, product URL or the full catalog — name, price, sale/list price, sizes with availability, colorways, images and category as structured JSON. No proxy needed.

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

## Pricing

from $6.00 / 1,000 dataset items

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?

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

## New Balance Product Scraper

Turn the official New Balance store (**newbalance.com**) into clean, structured
JSON. Search by keyword, drop in product links, or sync the **entire catalog** —
and get names, prices, sale/list prices, **size-level availability**, colorways,
images and categories for every product. Runs from a plain datacenter IP with
**no proxy required**.

***

### Who it's for

- **Price & promo monitoring** — brands, retailers and MAP monitors tracking New
  Balance prices, discounts and stock over time.
- **Sneaker resellers & arbitrage** — watch drops, sale percentages and which
  sizes are in stock on the official store vs resale marketplaces.
- **E-commerce, affiliate & catalog feeds** — a reliable, incremental product
  feed for comparison sites, Google Shopping and CRMs.
- **Analysts & researchers** — assortment and pricing studies at catalog scale.

### What you get — output fields

| Field | Type | Description |
| ----- | ---- | ----------- |
| `pid` | string | Product / colorway ID |
| `masterId` | string | Master style ID |
| `name` | string | Product name |
| `category` | string | Category label |
| `url` | string | Product page URL |
| `slug` | string | URL slug |
| `price` | number | Current price |
| `listPrice` | number | Original / list price |
| `onSale` | boolean | Whether the item is discounted |
| `currency` | string | Currency (USD) |
| `image` | string | Primary product image |
| `images` | array | All product images (Scene7) |
| `colorwayCount` | integer | Number of colorways |
| `colorways` | array | Colorway style codes |
| `sizes` | array | Every size with `variantId` + `available` flag |
| `availableSizes` | array | Sizes currently in stock |
| `inStock` | boolean | Whether any size is in stock |
| `availabilityMsg` | string | Storefront availability message |
| `badge` | string | Merchandising badge (e.g. New) |
| `source` | string | What produced the row (`search:` / `url:` / `sitemap`) |
| `lastmod` | string | Catalog last-modified timestamp (catalog mode) |
| `scrapedAt` | string | UTC scrape timestamp |

> Size, colorway, image and availability fields come from full product detail;
> keep **Include full product detail** on (default) to populate them.

### High-value use cases

1. **Daily price & discount tracking** — schedule a keyword or full-catalog run,
   diff `price`/`onSale` day over day to catch markdowns and MAP violations.
2. **Size-availability alerts for resellers** — monitor `availableSizes` on hot
   styles (990, 9060, 2002R) and act the moment a size restocks or sells out.
3. **Catalog feed for comparison / affiliate sites** — full-catalog mode with
   `updatedSince` gives a fresh, incremental product feed with images and prices.
4. **Assortment intelligence** — pull the whole catalog to analyze category mix,
   colorway breadth and price bands.
5. **Enrich a product list** — pass a list of product URLs/IDs and get full,
   normalized detail for each.

### Input parameters

| Field | Type | Default | Description |
| ----- | ---- | ------- | ----------- |
| `searchQueries` | string\[] | `["990"]` | Keywords to search; each is fully paginated |
| `productUrls` | string\[] | – | Product page URLs or bare PIDs (always fetched with detail) |
| `scrapeFullCatalog` | boolean | `false` | Scrape the entire US catalog via sitemap |
| `updatedSince` | string | – | Catalog mode: only products modified on/after this ISO date |
| `includeDetails` | boolean | `true` | Enrich each product with sizes, colorways, images, availability |
| `includeLocales` | boolean | `false` | Catalog mode: include non-US locale URLs |
| `maxItems` | integer | `100` | Stop after this many products |
| `sortRule` | string | – | Optional Commerce sort id for searches (e.g. `price-low-to-high`) |
| `ignoreSslErrors` | boolean | `false` | Disable TLS verify (only behind a corporate proxy) |
| `proxyConfiguration` | object | `{ "useApifyProxy": false }` | Optional proxy |

Provide at least one of `searchQueries`, `productUrls`, or `scrapeFullCatalog`.

### Example input

```json
{
    "searchQueries": ["990", "fresh foam"],
    "includeDetails": true,
    "maxItems": 50
}
```

Full-catalog incremental sync:

```json
{
    "scrapeFullCatalog": true,
    "updatedSince": "2026-08-01",
    "includeDetails": true,
    "maxItems": 1000
}
```

### Example output

```json
{
    "pid": "U990V4-53041",
    "masterId": "U990V4",
    "name": "Made in USA 990v4",
    "category": "Made in USA",
    "url": "https://www.newbalance.com/pd/made-in-usa-990v4/U990V4-53041.html",
    "price": 184.99,
    "listPrice": 184.99,
    "onSale": false,
    "currency": "USD",
    "images": ["https://nb.scene7.com/is/image/NB/u990v4-53041_..."],
    "colorwayCount": 1,
    "sizes": [{ "size": "9", "variantId": "U990V4-53041-D-09", "available": true }],
    "availableSizes": ["8", "9", "10", "11", "12"],
    "inStock": true,
    "availabilityMsg": "In Stock",
    "source": "search:990",
    "scrapedAt": "2026-08-24T00:00:00+00:00"
}
```

### Scheduling & integrations

- **Schedule** daily/hourly runs from the Apify Console for continuous price and
  stock tracking.
- **Webhooks** — trigger a downstream call when a run finishes (send new rows to
  your app, Slack, or a database).
- **Export** to JSON, CSV, Excel or feed to Google Sheets, Make, Zapier, or S3.
- **API** — start runs and pull the dataset from your own code via the Apify API.

### Use with AI assistants (MCP)

This Actor works with the Apify MCP server, so an AI assistant (Claude, ChatGPT,
or any MCP client) can call it as a tool — "get current prices and available
sizes for New Balance 990v6" — and receive structured results it can reason over.

### FAQ

**Do I need a proxy?** No. The endpoints used are ungated and run from any IP.
You can still attach an Apify proxy for a specific egress region.

**How fresh is the data?** Every run fetches live from newbalance.com. Catalog
mode exposes `lastmod`, and `updatedSince` lets you pull only recently changed
products.

**How many products can it return?** As many as you set in `maxItems`. The US
catalog is ~1,000+ master styles; keyword searches expand across colorways.

**Does it include reviews or ratings?** No — the storefront's product view does
not expose them, so this Actor focuses on catalog, pricing, variants and stock.

**Is scraping legal?** The Actor collects publicly available product data. You are
responsible for using the output in line with applicable laws and New Balance's
terms.

**Something broke — how fast are fixes?** Failures are monitored and reported
automatically; issues are addressed promptly.

# Actor input Schema

## `searchQueries` (type: `array`):

Keywords to search the New Balance store for, e.g. "990", "fresh foam", "running shoes". Each query is fully paginated. Ungated — needs no proxy.

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

Specific New Balance product page URLs (e.g. https://www.newbalance.com/pd/990v6/M990GL6.html) or bare product IDs (e.g. MG202, ML574V3-40377). These are always fetched with full detail.

## `scrapeFullCatalog` (type: `boolean`):

Iterate the New Balance product sitemap to scrape the entire US catalog (~1,000+ styles). Combine with "Updated since" for incremental syncs. Respects the max-results cap.

## `updatedSince` (type: `string`):

Only used with "Scrape the full catalog". ISO date/time (e.g. 2026-08-01); only catalog products with a sitemap lastmod on or after this are scraped. Leave empty to scrape everything.

## `includeDetails` (type: `boolean`):

Enrich each product with sizes and size-level availability, all colorways, the full image set, and stock status (one extra request per product). Turn off for faster, lighter rows.

## `includeLocales` (type: `boolean`):

Full-catalog mode only: also include non-en\_US locale product URLs (e.g. /es/pd/...). Off by default.

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

Stop after pushing this many products across all sources.

## `sortRule` (type: `string`):

Optional Salesforce Commerce sorting rule id applied to search queries, e.g. "price-low-to-high", "price-high-to-low", "newest", "best-matches". Leave empty for the default relevance order.

## `ignoreSslErrors` (type: `boolean`):

Disable TLS certificate verification. Only needed when running behind an intercepting/corporate proxy with a custom CA.

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

Optional Apify proxy. New Balance's endpoints work without a proxy; use one only if you need a specific egress region.

## Actor input object example

```json
{
  "searchQueries": [
    "990"
  ],
  "scrapeFullCatalog": false,
  "includeDetails": true,
  "includeLocales": false,
  "maxItems": 100,
  "ignoreSslErrors": false,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `dataset` (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 = {
    "searchQueries": [
        "990"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("axlymxp/newbalance-product-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 = { "searchQueries": ["990"] }

# Run the Actor and wait for it to finish
run = client.actor("axlymxp/newbalance-product-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 '{
  "searchQueries": [
    "990"
  ]
}' |
apify call axlymxp/newbalance-product-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,axlymxp/newbalance-product-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/cjNPJwbGoEuCLGOki/builds/uLbacYsiU1IawbQOH/openapi.json
