# Pro:Direct Sport Scraper: Catalog Prices, Stock and Sizes Data (`getascraper/prodirectsport-catalog-scraper`) Actor

Scrape Pro:Direct Sport's full catalog: football, rugby, tennis, and running gear across every carried brand. One row per size variant with price, stock, SKU, and brand, filterable before you run. Skip hand-configuring a generic Shopify scraper. JSON, CSV, or Excel export. From $0.69 per 1,000 rows.

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

## Pricing

from $0.52 / 1,000 product variants

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?

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

## ⚽ Pro:Direct Sport Scraper: Catalog Prices, Stock and Sizes Data

<table width="100%" style="display:table;width:100%;border-collapse:separate;border-spacing:0;margin-bottom:0">
<tr>
<td style="padding:24px 28px;background:#EAF5EE;border:1px solid #BBE0C8;border-top:4px solid #15803D;color:#1C1917;border-radius:10px 10px 0 0">
<span style="font-size:23px;font-weight:800;color:#1C1917;line-height:1.3">Pro:Direct Sport's full catalog, ready in minutes, no setup required</span><br>
<span style="font-size:15px;color:#57534E;line-height:1.6">Pull brand, price, stock, and size data for football, rugby, tennis, and running gear from Pro:Direct Sport without building or configuring a scraper yourself.</span>
</td>
</tr>
</table>
<table width="100%" style="display:table;width:100%;border-collapse:separate;border-spacing:0;margin-top:0">
<tr>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #BBE0C8;vertical-align:top;border-top:none;color:#1C1917;border-radius:0 0 0 10px">
<span style="font-size:15px;font-weight:800;color:#15803D">🏟️ Multi-sport catalog</span><br>
<span style="font-size:12px;color:#57534E">Football, rugby, tennis, and running gear from one retailer in a single run.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #BBE0C8;border-left:none;vertical-align:top;border-top:none;color:#1C1917">
<span style="font-size:15px;font-weight:800;color:#15803D">🏷️ Brand & price filters</span><br>
<span style="font-size:12px;color:#57534E">Narrow to exact brands, product types, and price ranges before you scrape.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #BBE0C8;border-left:none;vertical-align:top;border-top:none;color:#1C1917">
<span style="font-size:15px;font-weight:800;color:#15803D">👟 Stock per size</span><br>
<span style="font-size:12px;color:#57534E">Know exactly which sizes are in stock, not just whether a listing is live.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #BBE0C8;border-left:none;vertical-align:top;border-top:none;color:#1C1917;border-radius:0 0 10px 0">
<span style="font-size:15px;font-weight:800;color:#15803D">⏱️ Ready in minutes</span><br>
<span style="font-size:12px;color:#57534E">Point it at a category link and get structured data back immediately.</span>
</td>
</tr>
</table>

Point this Actor at one or more Pro:Direct Sport category pages and get clean, filtered product and variant data back, with no scraper setup of your own.

### 🔍 What does this Actor do?

[Pro:Direct Sport](https://www.prodirectsport.com) sells football, rugby, tennis, and running gear from a wide range of brands under one storefront. This Actor reads a category page you point it at and returns every product's brand, type, description, and per-size pricing and stock, already structured as clean rows ready to filter, sort, or import.

You don't need to inspect the site's markup or write any selectors. Give it a category link, set the filters you want, and get a dataset back.

### 💡 Who uses this?

**"I resell football boots and need to catch price drops and restocks before my competitors do."**
Scrape a category on a schedule, filter to the brands you carry, and see exactly which sizes just came back in stock or dropped in price.

**"I'm tracking UK sporting goods pricing across brands for a market report."**
Get a clean, structured export across football, rugby, tennis, and running gear in one place, instead of piecing it together by hand.

**"I'm building a price comparison feed and need Pro:Direct's catalog in a consistent format."**
Every row carries the same fields (brand, type, size, price, stock) so it drops straight into a comparison feed alongside other retailers.

### 🚀 How to use it

<table width="100%" style="display:table;width:100%;border-collapse:separate;border-spacing:0">
<tr>
<td style="padding:16px 14px;width:33%;background:#EAF5EE;border:1px solid #BBE0C8;border-radius:10px 0 0 10px;vertical-align:top;color:#1C1917">
<span style="font-size:12px;font-weight:800;color:#15803D;letter-spacing:1px">STEP 1</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Pick your categories</span><br>
<span style="font-size:12px;color:#57534E">Add one or more Pro:Direct Sport collection links for the sports or brands you care about.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#EAF5EE;border:1px solid #BBE0C8;border-left:none;vertical-align:top;color:#1C1917">
<span style="font-size:12px;font-weight:800;color:#15803D;letter-spacing:1px">STEP 2</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Set your filters</span><br>
<span style="font-size:12px;color:#57534E">Narrow by brand, product type, price range, or stock status.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#EAF5EE;border:1px solid #BBE0C8;border-left:none;border-radius:0 10px 10px 0;vertical-align:top;color:#1C1917">
<span style="font-size:12px;font-weight:800;color:#15803D;letter-spacing:1px">STEP 3</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Export your data</span><br>
<span style="font-size:12px;color:#57534E">Download as JSON, CSV, or Excel, or pull it straight into Sheets or a database.</span>
</td>
</tr>
</table>

### 📥 Input

| Field | Type | Required | Description |
|---|---|---|---|
| Collection URLs | array of URLs | Yes | One or more Pro:Direct Sport category page links to scrape. |
| Brand Filter | array of strings | No | Only keep products from these brands, for example "Nike" or "adidas". |
| Product Type Filter | array of strings | No | Only keep products of this type, for example "Football Boots". |
| Minimum Price | number | No | Only keep variants priced at or above this amount, in GBP. |
| Maximum Price | number | No | Only keep variants priced at or below this amount, in GBP. |
| Only In-Stock Variants | boolean | No | When enabled, drop sizes currently listed as unavailable. |
| Max Variant Rows | integer | No | Caps the total number of rows returned across all category URLs. |
| Proxy Configuration | object | No | Apify Proxy configuration. Residential proxy is the default and is required for reliable access to this target. |

### 📤 Output

Every scraped size variant becomes one dataset row.

```json
{
  "productId": 7742160765018,
  "title": "adidas Predator Elite Tongue FG",
  "handle": "adidas-predator-elite-tongue-firm-ground-iron-met-ftwr-white-lucid-red-adult-boots-1047116",
  "vendor": "adidas",
  "productType": "Football Boots",
  "tags": ["age_adults", "gender_unisex", "silo_predator"],
  "description": "Become the ultimate finisher with adidas Predator Elite Tongue FG football boots...",
  "variantId": 42795271323738,
  "size": "8",
  "sku": "PC1448265",
  "price": 200,
  "compareAtPrice": 250,
  "discountPercent": 20,
  "available": true,
  "weightGrams": 700,
  "sourceCollectionHandle": "football-adidas-boots",
  "productUrl": "https://www.prodirectsport.com/products/adidas-predator-elite-tongue-firm-ground-iron-met-ftwr-white-lucid-red-adult-boots-1047116",
  "scrapedAt": "2026-10-01T10:19:01.117Z"
}
```

### 📊 Data table

| Field | Type | Description |
|---|---|---|
| productId | integer | Pro:Direct Sport's internal product ID. |
| title | string | Product title. |
| handle | string | Product's URL slug. |
| vendor | string | Brand name. |
| productType | string | Product category, for example "Football Boots". |
| tags | array | Raw tags published on the product page. |
| description | string | Plain-text product description. |
| variantId | integer | ID for this specific size/option. |
| size | string | Size or option label for this variant. |
| sku | string | SKU for this variant. |
| price | number | Current price in GBP. |
| compareAtPrice | number | Original price before any discount, if published. |
| discountPercent | number | Percent discount off compareAtPrice, when one applies. |
| available | boolean | Whether this size is currently in stock. |
| weightGrams | number | Shipping weight in grams, when published. |
| sourceCollectionHandle | string | Which input category this row came from. |
| productUrl | string | Public product page URL. |
| scrapedAt | string | When this Actor collected the row. |

### 💰 Pricing

This Actor uses Apify's pay-per-event pricing. You pay only for rows actually returned; an empty or failed run costs nothing, and there are no subscriptions. Free plan runs are limited in items per run, runs per day, and a short wait between runs.

### ⭐ Enjoying Pro:Direct Sport Catalog Scraper?

<table width="100%" style="display:table;width:100%;border-collapse:separate;border-spacing:0">
<tr>
<td style="padding:20px 24px 14px;background:#EAF5EE;border:1px solid #BBE0C8;border-left:5px solid #15803D;border-radius:10px 10px 0 0;color:#1C1917">
<span style="font-size:20px;letter-spacing:4px">⭐ ⭐ ⭐ ⭐ ⭐</span><br>
<span style="font-size:17px;font-weight:800;color:#1C1917">If this saved you from building your own scraper, a quick rating helps other buyers find it.</span><br>
<span style="font-size:14px;color:#57534E">A 5-star rating takes 10 seconds and helps other resellers and researchers find this Actor. Your feedback also tells us what to build next.</span>
</td>
</tr>
<tr>
<td style="padding:0;background:#15803D;border:1px solid #15803D;border-left:5px solid #15803D;border-top:none;border-radius:0 0 10px 10px;text-align:center;color:#FFFFFF">
<a href="https://apify.com/getascraper/prodirectsport-catalog-scraper/reviews" style="display:block;padding:13px 16px;color:#FFFFFF;text-decoration:none;font-weight:800;font-size:15px;letter-spacing:0.3px">★&nbsp;&nbsp;Rate this Actor on Apify</a>
</td>
</tr>
</table>

### ❓ FAQ

**Does this Actor need a Pro:Direct account or login?**
No. It only collects pages that are publicly visible on prodirectsport.com, no login, API key, or cookie required.

**Will it get blocked?**
Pro:Direct Sport's catalog pages are ordinary public storefront pages, no login or CAPTCHA involved, and this Actor uses a residential proxy by default so runs complete reliably.

**Why use this instead of a generic storefront scraper?**
You can use a general-purpose scraper and configure it yourself for Pro:Direct Sport. This Actor saves you that setup: it is pre-configured with the right pages, fields, and filters for Pro:Direct Sport specifically, so you get a working export immediately instead of building one.

**Can I filter to just one sport or brand?**
Yes. Point the Collection URLs field at the specific category pages you want (football, rugby, tennis, running, or a specific brand collection) and optionally narrow further with the Brand, Product Type, and Price filters.

**Why is a field empty on some rows?**
Pro:Direct Sport doesn't publish every field for every product. This Actor never fills a gap with a placeholder; an empty field means the site hasn't published that data point.

### 🔗 Other actors

- [REI Scraper: Outdoor gear, sale prices and product specs](https://apify.com/getascraper/rei-scraper) ↗ - outdoor and sports gear pricing from another major specialty retailer.
- [Petbarn Scraper: Product Prices, Member Prices & Stock as JSON](https://apify.com/getascraper/petbarn-product-scraper) ↗ - same category pattern applied to pet supplies retail.
- [ThriftBooks Scraper: Cheap Books, Condition Prices & Stock Data](https://apify.com/getascraper/thriftbooks-scraper) ↗ - catalog pricing and stock from a different specialty retailer.
- [WooCommerce Marketplace Extensions Scraper: Pricing, Ratings & Vendor Data](https://apify.com/getascraper/woocommerce-marketplace-extensions-scraper) ↗ - catalog and pricing data from another major ecommerce platform.

# Changelog

This Actor's version history is a separate document: https://apify.com/getascraper/prodirectsport-catalog-scraper/changelog.md

# Actor input Schema

## `collectionUrls` (type: `array`):

Full Pro:Direct Sport collection page URLs, e.g. https://www.prodirectsport.com/collections/football-adidas-boots. Each collection already returns full product and variant data (price, stock, size options) with no extra requests needed. The actor follows the site's own pagination for each collection automatically, stopping once a page returns no more products or the Max Products limit below is reached.

## `vendor` (type: `array`):

One brand per line, for example "Nike" or "adidas" (case-insensitive, partial match). Leave empty to keep every brand.

## `productType` (type: `array`):

One product type per line, for example "Football Boots" or "Trainers" (case-insensitive, partial match, matching the site's own product_type field). Leave empty to keep every product type.

## `minPrice` (type: `number`):

Only keep variants priced at or above this amount, in GBP.

## `maxPrice` (type: `number`):

Only keep variants priced at or below this amount, in GBP.

## `onlyInStock` (type: `boolean`):

When enabled, size/option variants the site currently lists as unavailable are dropped from the output instead of being included with an Out of Stock status.

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

Maximum number of product-variant rows to return across all collection URLs combined. A single product can produce several rows if it comes in multiple sizes, each with its own stock status. Keep this modest for a first test run; raise it once you know how many rows a given collection produces.

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

Pro:Direct Sport rate-limits requests from Apify's datacenter proxy and from a direct connection alike, confirmed live (both return HTTP 429), so residential proxy is used by default. It is required for reliable access to this target.

## Actor input object example

```json
{
  "collectionUrls": [
    {
      "url": "https://www.prodirectsport.com/collections/football-adidas-boots"
    }
  ],
  "vendor": [],
  "productType": [],
  "onlyInStock": false,
  "maxItems": 20,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `results` (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 = {
    "collectionUrls": [
        {
            "url": "https://www.prodirectsport.com/collections/football-adidas-boots"
        }
    ],
    "vendor": [],
    "productType": [],
    "onlyInStock": false,
    "maxItems": 20,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("getascraper/prodirectsport-catalog-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 = {
    "collectionUrls": [{ "url": "https://www.prodirectsport.com/collections/football-adidas-boots" }],
    "vendor": [],
    "productType": [],
    "onlyInStock": False,
    "maxItems": 20,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("getascraper/prodirectsport-catalog-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 '{
  "collectionUrls": [
    {
      "url": "https://www.prodirectsport.com/collections/football-adidas-boots"
    }
  ],
  "vendor": [],
  "productType": [],
  "onlyInStock": false,
  "maxItems": 20,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call getascraper/prodirectsport-catalog-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,getascraper/prodirectsport-catalog-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/kiA8vlmPKCHBaEjz9/builds/M0fWVxGyJZZjNdxzK/openapi.json
