# Target Scraper (`automly/target-com-scraper`) Actor

Scrape Target.com products by keyword, category, product link or TCIN: price, sale price, promotions, ratings, reviews count, images, specs and store pickup or delivery availability. Export to CSV, JSON or Excel, schedule runs or use the API.

- **URL**: https://apify.com/automly/target-com-scraper.md
- **Developed by:** [Automly](https://apify.com/automly) (community)
- **Categories:** E-commerce
- **Stats:** 26 total users, 20 monthly users, 99.2% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.55 / 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.

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

## Target Scraper - Target.com Products, Prices & Stock

### What is Target Scraper?

**Target Scraper** is a tool that lets you **scrape product data from Target.com**: current and regular prices, sale status, local availability and store stock, pickup and shipping options, ratings and review counts, images, specifications, promotions, badges and categories. Add a keyword, a Target search or category link, product links or TCINs, click **Start**, and download the products as Excel, CSV or JSON.

- 📍 **Local prices and stock:** set a US ZIP code and get the nearest store's price, pickup, delivery and shipping availability
- 🎨 **Every variant:** each color and size with its own TCIN and sold-out status
- 🔎 **Four ways in:** search keywords, category links or IDs, product links and TCINs
- 🔓 **No login:** no Target account needed
- 💸 **Free to try:** the $5 of free usage every Apify account gets each month covers up to about 3,200 products

### What can Target Scraper do?

- Scrape Target search results by keyword or search URL
- Scrape every listed product in a Target category
- Scrape Target products by URL or TCIN, including single variants (color, size) of a product
- Get Target current price, regular price and sale status
- Check Target store stock, shipping and local pickup availability for a US ZIP code
- Get every variant of a Target product with its TCIN and sold-out status
- See whether a product is sold by Target or by a Target Plus marketplace seller, and the seller's name
- Find sponsored products in Target search results
- Get Target product UPC, DPCI, brand, category, description, highlights and specifications
- Get Target ratings, review counts, rating distribution, recommendations and question counts
- Get product badges such as Bestseller, Highly rated and Rarely returned
- Export Target product data to Excel, CSV, JSON or XML, or pull it from the Apify API

### What data can you extract from Target.com?

| | | |
|---|---|---|
| 🔖 TCIN, parent TCIN, DPCI, UPC | 🏷️ Title and brand | 💲 Price, regular price, on sale |
| 📦 Availability and sold out | 🏬 Store pickup quantity | 🚚 Shipping and delivery options |
| 🏪 Target or Target Plus seller | ⭐ Rating and rating count | 💬 Review count and rating distribution |
| 👍 Recommendations and question count | 🏅 Badges | 🎁 Promotions |
| 🗂️ Category path | 📝 Description and highlights | 📋 Specifications |
| 🖼️ Images and videos | 📐 Package dimensions | ↩️ Purchase limits and return policy |
| 🎨 Variants | 📢 Sponsored flag | 📍 Store name, ID, ZIP code and state |

### How to scrape Target products

1. [Create a free Apify account](https://console.apify.com/sign-up).
2. Open **Target Scraper**.
3. Add Target product, search or category links, or enter search keywords, category IDs or TCINs.
4. Set **Maximum products** and the **US ZIP code** for local store and fulfillment data, then click **Start**.
5. When the run finishes, download the products as Excel, CSV, JSON or XML.

Keep **Fetch full product details** on for the richest output, or turn it off for faster listing-only runs.

### How much does it cost to scrape Target products?

You pay **$1.55 per 1,000 products**, plus a tiny start fee per run. The Apify platform usage of the run is paid separately, on top of the product price.

Example: 1,000 products cost $1.55, plus the run's platform usage. **Maximum products** keeps a run's cost under control, and you can also set a maximum cost per run.

Every Apify account gets **$5 of free usage each month**, enough for up to about 3,200 products. See the **Pricing** tab for details.

### ⬇️ Input

| Setting | What it does |
|---|---|
| **Target URLs** | Target.com product, search or category links, one per line |
| **Search keywords** | Keywords such as `air fryer` |
| **Target product IDs (TCINs)** | Target product IDs such as `89110863` |
| **Target category IDs** | The ID after `/N-` in a category link, such as `ncrpx` |
| **Maximum products** | Unique products across all inputs (default 100, up to 10,000). Search terms are collected first, then categories, then TCINs, so a low limit can be used up before later inputs run |
| **US ZIP code** | Picks the nearest Target store for local price, pickup, delivery and shipping (default `10001`) |
| **Sort products by** | Relevance, price low to high, price high to low, best-selling, newest or guest rating |
| **Fetch full product details** | Adds UPC, detailed description, specifications, all images, videos, review statistics and return policy (on by default) |
| **Include raw Target data** | Adds Target's original product data in `rawData`. Rows become much larger |
| **Speed** | Higher is faster. The default works for most runs |

Connection settings - the default works for most runs.

Example: the 200 best-selling air fryers, priced for a Chicago store.

```json
{
  "searchTerms": ["air fryer"],
  "sortBy": "bestselling",
  "maxItems": 200,
  "zipCode": "60601"
}
```

Example: one product by TCIN, with full details.

```json
{
  "tcins": ["89110863"],
  "zipCode": "10001",
  "includeProductDetails": true
}
```

### ⬆️ Output

You get one row per product. You can view them as a table in Apify Console or download them as Excel, CSV, JSON, HTML or XML.

```json
{
  "type": "product",
  "tcin": "89110863",
  "parentTcin": null,
  "url": "https://www.target.com/p/gourmia-6-qt-digital-window-air-fryer/-/A-89110863",
  "title": "Gourmia 6qt Digital Window Air Fryer with 12 Presets & Guided Cooking Black",
  "brand": "Gourmia",
  "isMarketplace": false,
  "seller": null,
  "dpci": "072-04-0231",
  "upc": "810002864582",
  "price": 69.99,
  "formattedPrice": "$69.99",
  "regularPrice": 69.99,
  "isOnSale": false,
  "currency": "USD",
  "availability": "IN_STOCK",
  "soldOut": false,
  "rating": 4.1,
  "ratingCount": 2250,
  "reviewCount": 991,
  "badges": ["Rarely returned", "Highly rated"],
  "category": "Air Fryers",
  "categories": ["Kitchen & Dining", "Kitchen Appliances", "Fryers", "Air Fryers"],
  "highlights": ["6-QT capacity can cook family staples and party favorites"],
  "specifications": {"Capacity (Volume)": "6 Quart", "Wattage Output": "1500 Watts"},
  "images": ["https://target.scene7.com/is/image/Target/GUEST_..."],
  "variants": [],
  "isSponsored": false,
  "sourceType": "search",
  "sourceValue": "air fryer",
  "position": 1,
  "store": {"id": "3412", "name": "Chelsea 23rd and 8th", "zipCode": "10001", "state": "NY"}
}
```

Every run also saves a short report in its **Storage** tab: what the run was asked for, the store used, how many products were scraped, and which products came back without full details, with the reason for each. Those products still have their listing data in the dataset.

### Real-time Target API

Need one product or a quick search inside your app? Call the actor directly and get the products back in the response, without starting a run. Responses use the same fields as dataset rows.

- `GET /product?tcin=89110863&zipCode=10001` returns one product with full details.
- `GET /search?keyword=air+fryer&limit=24&zipCode=10001&sortBy=relevance&includeProductDetails=true` returns matching products, up to 100 per call.

```bash
curl "https://automly--target-com-scraper.apify.actor/product?tcin=89110863" \
    -H "Authorization: Bearer <YOUR_API_TOKEN>"
```

A missing product answers 404 and a temporary failure answers 502, so a failure is never mistaken for a product that does not exist.

### How can I use Target product data?

- **Price monitoring:** track Target prices, regular prices and sales for your products or a competitor's on a schedule
- **Local stock checks:** see store pickup quantity and availability for the ZIP codes you sell in
- **Retail and brand analytics:** compare ratings, review counts, badges and best-selling ranks across a category
- **Catalog enrichment:** UPC, DPCI, specifications, highlights and images by TCIN
- **Marketplace research:** find Target Plus sellers and the products they list

### What are the limits?

- **Prices, stock, pickup and delivery depend on location.** Set **US ZIP code** to the market you need.
- **Target shows at most 1,200 products for one search term or category.** To collect more, split the query into narrower search terms or subcategories.
- Search ranking and product availability can change between runs.
- **Sponsored products** are returned in the order Target displays them, marked with `isSponsored: true`. A product appears only once per run, at its first position.
- **Variants:** a TCIN that belongs to one variant returns that variant's own title, price, DPCI, UPC and stock, with `parentTcin` set. A parent TCIN returns the lowest price of its variants and no store availability; use the TCINs in `variants` for per-variant data.
- **Target Plus** marketplace items have no DPCI.
- `shippingQuantity` is filled for search results only; category and TCIN inputs return store pickup quantity instead.
- `promotions` is filled only when Target attaches a promotion to the product. Sale prices are always reflected in `price`, `regularPrice` and `isOnSale`.
- If an input could not be scraped, the run report says so, so you never get a silently empty dataset.

### Scrape more e-commerce data

| Actor | What it gets |
|---|---|
| [Walmart Scraper - Products, Prices, Stock & Reviews](https://apify.com/automly/walmart-scraper) | Walmart products, prices, stock, variants, sellers and reviews |
| [Amazon Scraper - Product Prices, BSR & Sales Estimates](https://apify.com/automly/amazon-products-scraper---fast-efficient-with-sales-data) | Amazon products with Best Sellers Rank and monthly sales estimates in 20 stores |
| [eBay Scraper - Listings, Prices, Shipping & Sellers](https://apify.com/automly/ebay-scraper) | eBay listings in 8 marketplaces: price, shipping, condition and seller ratings |
| [Shopify Scraper - Products, Prices, Variants & Stock](https://apify.com/automly/shopify-products-scraper) | Any public Shopify store's product catalog |
| [Walmart Reviews Scraper - Ratings, Text & Verified Buyers](https://apify.com/automly/walmart-reviews-scraper) | Walmart customer reviews with rating, text and verified purchase |

### 🤖 Use with AI agents (MCP)

This actor works as a tool for AI agents. Connect any MCP-compatible AI assistant or agent to the Apify MCP server at [mcp.apify.com](https://mcp.apify.com) (sign in with your Apify account), and it can find this actor, fill in the input and read the results by itself. Ask in plain words, for example *"Get Target prices for air fryers near ZIP code 10001"*, and the agent runs `automly/target-com-scraper` with an input like `{"searchTerms": ["air fryer"], "zipCode": "10001", "maxItems": 40}`. Every input and output field has a plain description, so the agent knows what to type and what each column means. Agent runs cost the same as runs you start yourself.

### ❓FAQ

#### How much does it cost to scrape Target products?

$1.55 per 1,000 products, plus a tiny start fee and the run's platform usage. See [How much does it cost to scrape Target products?](#how-much-does-it-cost-to-scrape-target-products) above.

#### Do I need a Target account?

No. You don't need a Target account or cookies. You only need a free Apify account.

#### Can I get prices and stock for a specific store?

Yes. Set **US ZIP code**, and the nearest Target store is used for price, pickup quantity, delivery and shipping. Each row's `store` field names the store, its ZIP code and state. To compare markets, run once per ZIP code.

#### How many products can I get from one search or category?

Up to 1,200, which is the most Target shows for one search term or category. Split broad searches into narrower keywords or subcategories to get more.

#### Does it scrape Target review text?

No. Each product has its rating, rating count, review count, rating distribution, recommendations and question count, but not the text of individual reviews.

#### Can I scrape every variant of a product?

Yes. A product's `variants` list each color and size with its own TCIN and sold-out status. Add those TCINs as input to get each variant's own price, UPC and stock.

#### Can I connect Target Scraper to other tools or AI agents?

Yes. Start runs and download results with the Apify API or the Python and JavaScript clients, send results to Make, Zapier, n8n, Google Sheets or Slack with Apify integrations and webhooks. AI assistants and agents can run it through the Apify MCP server, see the **Use with AI agents (MCP)** section above.

#### Is it legal to scrape Target?

Target Scraper only collects public product data that any shopper can see on Target.com, such as prices, stock and specifications. Some fields, like marketplace seller names, can still count as personal data, which may be protected by laws such as GDPR, so only scrape for a legitimate reason and ask a lawyer if you are unsure. You can read more in [Is web scraping legal?](https://blog.apify.com/is-web-scraping-legal/)

Target Scraper is an independent tool. It is not affiliated with, endorsed by or sponsored by Target.

#### Something isn't working?

Open the **Issues** tab with your input and what you expected, or tell us which field you need.

### ⭐ Your feedback

Have an idea or found a problem? Tell us in the **Issues** tab. If Target Scraper saved you time, a short review on the **Reviews** tab helps other people find it.

# Actor input Schema

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

Target.com product, search or category links, one per line, e.g. https://www.target.com/p/-/A-89110863 or https://www.target.com/s?searchTerm=air+fryer.

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

Words to search Target.com for, one per line, e.g. air fryer or paper towels.

## `tcins` (type: `array`):

Target product IDs, for example 89110863.

## `categoryIds` (type: `array`):

The ID after /N- in a Target category URL, for example ncrpx.

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

Maximum number of unique products returned across all inputs. Target serves at most 1,200 products per search term or category.

## `zipCode` (type: `string`):

Used to select the nearest Target store and return local price, pickup, delivery, and shipping availability.

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

Target's sort order for search and category inputs.

## `includeProductDetails` (type: `boolean`):

Adds UPC, detailed description, specifications, all images, videos, review statistics, and return policy. Disable for faster listing-only runs.

## `includeRawData` (type: `boolean`):

Include Target's original product object in rawData. This increases dataset size.

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

Higher is faster. The default works for most runs.

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

Proxy settings. The default works for most runs. If results come back empty, try a different proxy option.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.target.com/s?searchTerm=air+fryer"
    }
  ],
  "maxItems": 100,
  "zipCode": "10001",
  "sortBy": "relevance",
  "includeProductDetails": true,
  "includeRawData": false,
  "maxConcurrency": 5,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}
```

# 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 = {
    "startUrls": [
        {
            "url": "https://www.target.com/s?searchTerm=air+fryer"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("automly/target-com-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.target.com/s?searchTerm=air+fryer" }] }

# Run the Actor and wait for it to finish
run = client.actor("automly/target-com-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.target.com/s?searchTerm=air+fryer"
    }
  ]
}' |
apify call automly/target-com-scraper --silent --output-dataset

```

## MCP server setup

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