# Target.com Scraper - Products, Prices & Stock (`automly/target-com-scraper`) Actor

Scrape Target.com products by URL, TCIN, search keyword, or category. Extract prices, availability, ratings, images, specifications, promotions, and store-specific fulfillment data.

- **URL**: https://apify.com/automly/target-com-scraper.md
- **Developed by:** [Automly](https://apify.com/automly) (community)
- **Stats:** 1 total users, 0 monthly users, 0.0% 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.com Scraper - Products, Prices, Availability & Reviews

**Target.com Scraper** extracts product data from Target search results, categories, product URLs, or TCINs. Export current and regular prices, local availability, pickup and shipping options, ratings, reviews, images, specifications, promotions, badges, and category data to JSON, CSV, Excel, XML, or the Apify API.

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Target. It reads public Target.com product data without requiring a Target account.

### What can it scrape?

- Target search results by keyword or search URL
- Every listed product in a Target category
- Individual products by URL or TCIN, including single variants (color, size) of a product
- Current price, regular price, and sale status
- Shipping and local pickup availability for a US ZIP code, including the stock quantity at the selected store
- Every variant of a product (color, size, and other options) with its TCIN and sold-out status
- Whether a product is sold by Target or by a Target Plus marketplace seller, and the seller's name
- Whether a search result is a sponsored placement
- Brand, DPCI, UPC, category, description, highlights, and specifications
- Rating average, rating count, written-review count, rating distribution, recommendations, and question count
- Product badges such as Bestseller, Highly rated, and Rarely returned
- Primary and alternate images plus product videos
- Package dimensions, purchase limits, and return-policy text

### How to use

1. Add one or more Target product, search, or category URLs. You can also enter search terms, category IDs, or TCINs directly.
2. Choose the maximum number of products.
3. Enter the US ZIP code used for local store and fulfillment data.
4. Keep **Fetch full product details** enabled for the richest output, or disable it for faster listing-only collection.
5. Run the Actor and open the Dataset tab to download the results.

### Input

- `startUrls`: Target product, search, and category URLs.
- `searchTerms`: Keywords such as `air fryer`.
- `tcins`: Target product IDs such as `89110863`.
- `categoryIds`: IDs found after `/N-` in category URLs, such as `ncrpx`.
- `maxItems`: Maximum unique products across all inputs. Search terms are collected first, then categories, then TCINs, so a low limit can be used up before later inputs run. Default: 100.
- `zipCode`: US ZIP code for the nearest store, prices, pickup, delivery, and shipping. Default: `10001`.
- `sortBy`: Relevance, price, best-selling, newest, or guest rating.
- `includeProductDetails`: Fetch full PDP data. Default: true.
- `includeRawData`: Include Target's original product object. Default: false.
- `maxConcurrency`: Concurrent detail requests. Default: 5.
- `proxyConfiguration`: Proxy settings. US residential proxies are recommended.

### Output example

```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"}
}
```

### API access without a run

The Actor also answers HTTP requests directly, so a single product or search does not need a run to start. Send an [Apify API token](https://console.apify.com/account/integrations) as a bearer token. The Endpoints tab on the Actor's page lists the same endpoints and can send requests from the browser.

- `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, at most 100 per request.

Responses use the same fields as dataset rows.

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

A missing product answers 404, and a request Target refused answers 502, so a failure to reach Target is never mistaken for a product that does not exist.

### Run report

Every run writes two records to its key-value store, shown as tabs in the Storage tab:

- `report-summary`: what the run was asked for, the store used, how many products were scraped, and how many came back without full product-page details.
- `report-detail-failures`: those products, with the reason for each. Their dataset rows carry listing data only.

### Notes and limitations

- Prices, stock, pickup, and delivery are location-dependent. Set `zipCode` to the market you need.
- Target serves at most 1,200 products (50 pages) 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 items appear in Target search results and are returned in their displayed order, marked with `isSponsored: true`. A product appears only once per run, at its first position.
- 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 available 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`.
- Target can change its public web interfaces. The Actor validates responses and retries transient failures rather than silently returning empty datasets.
- Use the data responsibly and comply with applicable laws and Target's terms.

# Actor input Schema

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

Target.com product, search, or category URLs, one per line.

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

Keywords to search on Target.com.

## `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`):

Concurrent product-detail requests.

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

US residential proxies are recommended for reliable production runs.

## 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/yTm3mE1KfWXcv84yO/openapi.json
