# DSW Scraper: Shoes, Sneakers & Boots (`getascraper/dsw-scraper`) Actor

Extract shoe, sneaker, and boot catalogs from DSW. Get clean lists of brand, sizes, widths, colors, pricing, and image URLs. Perfect for price intelligence, stock monitoring, and retail arbitrage. Skip manual tracking.

- **URL**: https://apify.com/getascraper/dsw-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 $2.99 / 1,000 shoe scrapeds

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?

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

### What does DSW Scraper do?

Get current footwear product listings from DSW.com: brand, price in USD, sale price, available colors list, available sizes, widths, and high-resolution product image URLs, ready for your spreadsheet in under 15 seconds. Built for shoe resellers, e-commerce catalog builders, price tracking dashboards, and retail researchers.

### Why use DSW Scraper?

- **I am a footwear reseller** monitoring price drops, clearance events, and size stock levels on top-selling brands like Nike, Adidas, New Balance, and UGG on DSW to list on my own eBay or Poshmark store.
- **I am an e-commerce catalog manager** building a normalized database of shoes, sneakers, and boots across women's, men's, and kids' footwear.
- **I am a market-research analyst** building weekly reports on brand pricing strategies and discount rates in the US footwear retail space.
- **I am a bargain hunter** tracking my favorite running shoe models and colors on DSW to purchase when they go on sale.

### How to use DSW Scraper

1. Create a free Apify account (no credit card needed).
2. Open the DSW Scraper in the Apify Console.
3. Paste one or more category URLs (e.g. `/category/mens/shoes/athletic-sneakers/running`) or keywords.
4. Set optional filters for price range or max results limit.
5. Click **Start** and download your structured shoe catalog as CSV, Excel, or JSON.

### Input

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `startUrls` | array of URLs | Yes | Direct category or search page links (e.g. `https://www.dsw.com/category/mens/shoes/athletic-sneakers/running`). |
| `searchQueries` | array of strings | No | Product search keywords (e.g. `nike`, `running`). Bypassed if Start URLs are provided. |
| `lowPrice` | integer | No | Only include footwear priced at or above this value in USD. 0 = no minimum. |
| `highPrice` | integer | No | Only include footwear priced at or below this value in USD. 0 = no maximum. |
| `maxItems` | integer | No | Maximum number of products to output per search. Defaults to 100. |
| `maxConcurrency` | integer | No | Maximum parallel requests (1-20). Defaults to 3. |
| `debugLogging` | boolean | No | Print detailed tags (API, FETCH, EMIT) to the run log. Defaults to false. |
| `proxyConfiguration` | object | Yes | Proxy options. Required. US Residential Proxy is mandatory to bypass DataDome. |

### Output

A structured dataset of footwear listings with brand, prices, sizes, colors, widths, stock availability, and image URLs. Free users get up to 50 results per run, paid plans scale to 1,000,000.

```json
{
  "url": "https://www.dsw.com/product/410-v9-running-shoe-mens/611232",
  "productId": "611232",
  "name": "410 v9 Running Shoe - Men's",
  "brand": "New Balance",
  "price": 56,
  "salePrice": null,
  "currency": "USD",
  "description": "",
  "images": [
    "https://assets.designerbrands.com/match/Site_Name/611232_100_ss_01/?quality=70&io=transform:fit,width:600"
  ],
  "colors": ["Black", "Blue", "Navy"],
  "sizes": ["8", "8.5", "9", "9.5", "10", "11", "12"],
  "widths": ["Medium", "Wide"],
  "availability": "InStock",
  "scrapedAt": "2026-06-15T02:06:45.329Z"
}
```

### Data table

| Field | Type | Description |
| --- | --- | --- |
| `url` | string | Canonical link to the item detail page on DSW. |
| `productId` | string | Unique DSW product identifier. |
| `name` | string | Product display name. |
| `brand` | string | Brand name. |
| `price` | number | Regular retail price in USD. |
| `salePrice` | number | Sale or clearance price in USD (null if not on sale). |
| `currency` | string | Currency code, always USD. |
| `description` | string | Product detailed description including brand, gender, name, and classification tags. |
| `images` | array | Product high-resolution image URLs. |
| `colors` | array | Available product color options. |
| `sizes` | array | Available product sizes list. |
| `widths` | array | Available product widths (e.g. Medium, Wide). |
| `availability` | string | Stock status (InStock or OutOfStock). |
| `scrapedAt` | string | ISO 8601 timestamp of when the row was scraped. |

### Pricing

The Actor costs **$3.99 per 1,000 results**. A typical run extracting 200 products costs about $0.80. No proxy bandwidth charges beyond the standard US residential proxy tier.

### Tips or advanced options

- **Bypass anti-bot filters effortlessly.** DSW uses highly aggressive anti-scraping filters. This Actor uses optimized browser configuration combined with US residential proxies to bypass protection, meaning no more empty runs or blocks!
- **We charge only for success.** Undercutting competitors at just $3.99/1k, this scraper is highly cost-efficient and outputs complete colors, sizes, and width variants.
- **Direct category links work best.** Paste any category URL directly to get 62 products in a single unblocked API request, saving you duration and compute cost!

### FAQ, disclaimers, and support

##### Is the DSW scraper legal?

Yes. The DSW scraper accesses public catalog and search data that is publicly visible to any logged-out human in a browser. It does not require customer login, place automated orders, or bypass paywalls. You are responsible for compliance with local laws.

##### Why does this scraper require US proxies?

DSW restricts access to specific regions and geolocates its storefront. To successfully prevent geographic blocks and 403 pages, a US Residential Proxy is mandatory.

##### Can I track shoe sizes and widths?

Yes. Every product row includes a `sizes` list (e.g. `["8", "8.5", "9"]`) and a `widths` list (e.g. `["Medium", "Wide"]`) showing exact live inventory options.

##### Which categories are supported?

All footwear classes (Sneakers, Running Shoes, Boots, Heels, Kids, Women's, Men's) are supported. You can search by keyword or paste any catalog category link.

**Disclaimer:** This Actor accesses public web listing data only. It does not bypass authentication, paywalls, or anti-bot systems on the live site. DSW is the registered trademark of Designer Brands, Inc. This Actor is affiliation-free, and not endorsed or sponsored by Designer Brands.

# Actor input Schema

## `startUrls` (type: `array`):

DSW category or product search result page URLs (e.g. 'https://www.dsw.com/category/mens/shoes/athletic-sneakers/running').

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

Product search keywords (e.g. 'nike', 'running'). Bypassed if Start URLs are provided.

## `lowPrice` (type: `integer`):

Only include footwear priced at or above this value. 0 = no minimum.

## `highPrice` (type: `integer`):

Only include footwear priced at or below this value. 0 = no maximum.

## `color` (type: `string`):

Restrict to footwear matching this color.

## `material` (type: `string`):

Restrict to footwear made of this material.

## `size` (type: `string`):

Restrict to footwear of this US shoe size.

## `width` (type: `string`):

Restrict to footwear of this width class.

## `sort` (type: `string`):

Bidding and listings ordering on the DSW directory results.

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

Maximum number of products to output per search. Defaults to 100.

## `maxConcurrency` (type: `integer`):

Maximum parallel requests (1-20). Higher is faster.

## `debugLogging` (type: `boolean`):

Print detailed tags (API, FETCH, EMIT) to the run logs.

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

Proxy options. Required. US Residential Proxy is mandatory to bypass DataDome.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.dsw.com/category/mens/shoes/athletic-sneakers/running"
    }
  ],
  "searchQueries": [],
  "lowPrice": 0,
  "highPrice": 0,
  "color": "any",
  "material": "any",
  "size": "any",
  "width": "any",
  "sort": "featured",
  "maxItems": 100,
  "maxConcurrency": 3,
  "debugLogging": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}
```

# 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 = {
    "startUrls": [
        {
            "url": "https://www.dsw.com/category/mens/shoes/athletic-sneakers/running"
        }
    ],
    "searchQueries": [],
    "lowPrice": 0,
    "highPrice": 0,
    "color": "any",
    "material": "any",
    "size": "any",
    "width": "any",
    "sort": "featured",
    "maxItems": 100,
    "maxConcurrency": 3,
    "debugLogging": false,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "US"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("getascraper/dsw-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 = {
    "startUrls": [{ "url": "https://www.dsw.com/category/mens/shoes/athletic-sneakers/running" }],
    "searchQueries": [],
    "lowPrice": 0,
    "highPrice": 0,
    "color": "any",
    "material": "any",
    "size": "any",
    "width": "any",
    "sort": "featured",
    "maxItems": 100,
    "maxConcurrency": 3,
    "debugLogging": False,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "US",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("getascraper/dsw-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 '{
  "startUrls": [
    {
      "url": "https://www.dsw.com/category/mens/shoes/athletic-sneakers/running"
    }
  ],
  "searchQueries": [],
  "lowPrice": 0,
  "highPrice": 0,
  "color": "any",
  "material": "any",
  "size": "any",
  "width": "any",
  "sort": "featured",
  "maxItems": 100,
  "maxConcurrency": 3,
  "debugLogging": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}' |
apify call getascraper/dsw-scraper --silent --output-dataset

```

## MCP server setup

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