Target Product Scraper - Pricing, Reviews, Inventory avatar

Target Product Scraper - Pricing, Reviews, Inventory

Pricing

from $2.50 / 1,000 target product scrapeds

Go to Apify Store
Target Product Scraper - Pricing, Reviews, Inventory

Target Product Scraper - Pricing, Reviews, Inventory

Scrape Target.com products, prices, UPCs, ratings, reviews, images, categories, and optional store-level inventory using Target’s RedSky API. Search by keyword or enrich TCINs/product URLs. Fast no-browser scraper with sale prices, PDP details, and shipping/pickup availability.

Pricing

from $2.50 / 1,000 target product scrapeds

Rating

0.0

(0)

Developer

Elliot Padfield

Elliot Padfield

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Target Product Scraper - Prices, UPCs & Inventory

Scrape Target.com product search results, prices, sale prices, UPC barcodes, ratings, reviews, images, descriptions, category data, and optional store-level availability from Target's RedSky API.

This Actor is built for price monitoring, retail analytics, UPC enrichment, MAP compliance, affiliate catalogs, deal discovery, and SKU-level competitor research. It uses raw HTTPS requests to Target's RedSky API through Apify Residential Proxy, so it is much faster and cheaper than browser-driven Target scrapers.

What this Target scraper does

  • Searches Target.com by keyword
  • Enriches exact Target product URLs or TCINs
  • Pulls current price, regular price, sale price, and discount percentage
  • Extracts product title, TCIN, DPCI, brand, image URLs, bullets, and descriptions
  • Fetches UPC barcodes and fuller PDP metadata when product detail enrichment is enabled
  • Optionally fetches local shipping and pickup availability for a store, ZIP, and state
  • Deduplicates TCINs across multiple keywords and records all matching keywords
  • Uses Target RedSky endpoints directly, with no browser rendering
  • Uses Apify Residential Proxy automatically
  • Retries Target 429s, 5xxs, proxy failures, and RedSky captcha-block responses

Why use RedSky instead of a browser?

Target's website is a React storefront backed by RedSky JSON endpoints. The browser page is just the expensive way to get to the same product data. This Actor calls the same backend data surface directly, which means:

  • Faster runs: one search request returns up to 24 products
  • Lower memory: no Chromium instance
  • Cleaner data: structured product JSON instead of fragile DOM selectors
  • Better coverage: prices, reviews, UPCs, images, categories, and availability signals are exposed as fields

Input examples

{
"searchQueries": ["wireless headphones", "coffee maker"],
"maxProductsPerQuery": 50
}

Pull UPCs, descriptions, and category data

{
"searchQueries": ["running shoes"],
"maxProductsPerQuery": 25,
"includeProductDetails": true
}

Check local availability

{
"searchQueries": ["lego"],
"maxProductsPerQuery": 100,
"storeId": "3991",
"zip": "10001",
"state": "NY",
"includeProductDetails": true,
"includeFulfillment": true
}

Enrich specific Target products

{
"productUrls": [
"https://www.target.com/p/-/A-86696921"
],
"tcins": ["54191097"],
"includeProductDetails": true,
"includeFulfillment": true
}

Input fields

FieldTypeDefaultDescription
searchQueriesstring[]["wireless headphones"]Target.com search keywords to scrape.
queriesstring[]noneAlias for searchQueries.
productUrlsstring[]noneTarget product URLs. The Actor extracts TCINs automatically.
tcinsstring[]noneTarget Content Item Numbers to enrich directly.
maxProductsPerQueryinteger100Maximum search products per keyword. Target returns 24 products per page.
maxProductsintegernoneAlias for maxProductsPerQuery, supported for compatibility with other Target scraper inputs.
storeIdstring"3991"Target store ID used for local pricing and fulfillment context.
zipstring"10001"ZIP code for optional fulfillment checks.
statestring"NY"Two-letter state code for optional fulfillment checks.
includeProductDetailsbooleantrueFetch PDP RedSky data for UPC, descriptions, bullets, and richer metadata.
fetchProductDetailsbooleannoneAlias for includeProductDetails, supported for compatibility with other Target scraper inputs.
includeFulfillmentbooleanfalseFetch store-level shipping and pickup availability per product.
includeRawDatabooleanfalseAttach raw RedSky fragments for debugging or custom parsing.
dedupeProductsbooleantrueSave one row per TCIN across all sources and collect all matched keywords.
maxConcurrencyinteger8Concurrent product detail and fulfillment requests.
requestDelayMsinteger500Base retry delay in milliseconds.
maxRetriesinteger4Retries for transient failures and RedSky blocks.
redskyApiKeystringblankOptional override. Leave blank for automatic key scrape plus fallback.

Output fields

Product identity

FieldDescription
titleProduct title from Target.
tcinTarget Content Item Number.
dpciTarget DPCI when available.
upcUPC barcode from PDP enrichment when available.
brandProduct brand.
urlTarget product URL.
sourceTypesearch, tcin, or productUrl.
sourceValueKeyword, TCIN, or URL that produced the row.
searchKeywordFirst search keyword that discovered the product.
searchKeywordsAll matching keywords when dedupe is enabled.
searchRankRank within the search result page sequence.
searchPageSearch page number.

Pricing

FieldDescription
priceCurrent retail price.
regularPriceRegular non-sale price when Target exposes it.
salePriceSale price when discounted.
saveAmountDollar discount.
savePercentPercentage discount.
formattedPriceDisplay price string.
formattedRegularPriceDisplay regular price string.
formattedSalePriceDisplay sale price string.

Ratings and media

FieldDescription
ratingAverage star rating.
reviewCountNumber of reviews.
imageUrlPrimary Target image URL.
alternateImagesAdditional Target image URLs.

PDP enrichment

FieldDescription
descriptionShort cleaned product description.
bulletDescriptionsProduct bullet/spec list.
fullDescriptionFuller cleaned PDP description when exposed.
categoryCategory label.
categoryIdCategory identifier.
categoryBreadcrumbsBreadcrumb path when exposed.
isMarketplaceWhether the product appears to be marketplace sold.
sellerNameSeller name when exposed.

Availability enrichment

FieldDescription
availabilityStatusShipping or pickup status from fulfillment data.
inStockWhether shipping or pickup appears in stock.
shippingAvailableWhether shipping is in stock.
pickupAvailableWhether pickup is in stock.
shippingQuantityAvailable-to-promise quantity when exposed.
storeIdStore ID used for the run.
zipZIP used for fulfillment checks.
stateState used for fulfillment checks.

Output example

{
"title": "Sony WH-1000XM5 Wireless Noise Canceling Headphones",
"tcin": "86696921",
"dpci": "008-07-1234",
"upc": "027242923782",
"brand": "Sony",
"url": "https://www.target.com/p/-/A-86696921",
"searchKeyword": "wireless headphones",
"searchKeywords": ["wireless headphones", "noise cancelling headphones"],
"searchRank": 1,
"searchPage": 1,
"sourceType": "search",
"sourceValue": "wireless headphones",
"price": 269.99,
"regularPrice": 399.99,
"salePrice": 269.99,
"saveAmount": 130,
"savePercent": 32.5,
"formattedPrice": "$269.99",
"rating": 4.7,
"reviewCount": 1842,
"imageUrl": "https://target.scene7.com/is/image/Target/GUEST_abc123",
"alternateImages": [
"https://target.scene7.com/is/image/Target/GUEST_def456"
],
"description": "Industry-leading noise cancellation | 30-hour battery life",
"bulletDescriptions": [
"Industry-leading noise cancellation with Auto NC Optimizer",
"30-hour battery life with quick charging"
],
"category": "Headphones",
"categoryBreadcrumbs": "Electronics > Headphones > Wireless Headphones",
"availabilityStatus": "IN_STOCK",
"inStock": true,
"shippingAvailable": true,
"pickupAvailable": false,
"shippingQuantity": 4,
"storeId": "3991",
"zip": "10001",
"state": "NY",
"scrapedAt": "2026-05-31T22:00:00.000Z"
}

Performance notes

  • Search runs use plp_search_v2, 24 products per request.
  • PDP enrichment uses pdp_client_v1, one extra request per product.
  • Fulfillment enrichment uses product_fulfillment_and_variation_hierarchy_v1, one extra request per product.
  • Keep includeFulfillment off for broad catalog runs where inventory is not needed.
  • Keep dedupeProducts on for multi-keyword monitoring to avoid paying twice for the same TCIN.

Comparison

FeatureThis ActorBasic RedSky Target scrapersBrowser-based Target scrapersGeneric retail scrapers
Search by keywordYesYesUsuallyUsually
Product URL and TCIN enrichmentYesUsually noUsuallySometimes
RedSky API engineYesYesNoMixed
No browser requiredYesYesNoMixed
UPC supportYes, via PDP enrichmentSometimesRareRare
Regular vs sale price splitYesYesPartialPartial
Ratings and review countsYesYesUsuallySometimes
Category breadcrumbsYes, when exposed by PDPYesRareRare
Store-level price contextYesYesSometimesSometimes
Store-level fulfillment checksYes, optional per TCINUsually noSometimes, slowUsually no
Multi-keyword dedupeYesUsually noUsually noUsually no
Raw response debuggingOptionalUsually noNoNo
RedSky key overrideYesUsually noNot applicableUsually no

The main difference is that this Actor is built as a production catalog tool, not only a keyword scraper. It supports the competitor-style keyword workflow, but also accepts exact product URLs and TCINs, can check fulfillment, dedupes repeated TCINs across keywords, and exposes compatibility aliases for maxProducts and fetchProductDetails.

Pricing

This Actor is designed for pay-per-result pricing. One saved Target product row counts as one result. Failed requests, skipped duplicate TCINs, and enrichment failures that do not produce a dataset row should not count as saved results.

For broad monitoring runs, disable includeFulfillment unless you need inventory. PDP enrichment is the right default for catalog-quality output because it unlocks UPCs, fuller descriptions, and category data.

Code examples

From the Apify API

curl -X POST "https://api.apify.com/v2/acts/YOUR_USERNAME~target-products-prices-inventory-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"searchQueries": ["wireless headphones"],
"maxProducts": 25,
"storeId": "3991",
"fetchProductDetails": true
}'

From Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("YOUR_USERNAME/target-products-prices-inventory-scraper").call(run_input={
"searchQueries": ["coffee maker", "espresso machine"],
"maxProductsPerQuery": 50,
"includeProductDetails": True,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["title"], item.get("price"), item.get("upc"))

From Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('YOUR_USERNAME/target-products-prices-inventory-scraper').call({
searchQueries: ['gaming monitor'],
maxProducts: 40,
storeId: '3991',
fetchProductDetails: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.table(items.map((item) => ({
title: item.title,
price: item.price,
upc: item.upc,
rating: item.rating,
})));

Reliability notes

Target can captcha-block direct datacenter and home IP requests to RedSky. This Actor forces Apify Residential Proxy and classifies RedSky captcha JSON as retryable. If Target rotates its RedSky API key, the Actor first tries to scrape a fresh key from public Target pages. You can also pass redskyApiKey explicitly if you have a known-good key from browser recon.

If a product detail or fulfillment call fails, the Actor keeps the search result row and logs the enrichment failure instead of discarding the product. Failed search pages stop that keyword only; other keywords and TCINs continue.

FAQ

Do I need a Target account?

No. The Actor reads public Target product/search data exposed to guest shoppers through RedSky. RedCard member pricing and authenticated account-only data are not supported.

How do I find my Target store ID?

Open Target.com, choose a store, then inspect the URL or Network tab for store_id. Common examples include 3991, 1375, 2775, and 1462.

Does this scrape individual reviews?

No. It returns aggregate rating and review count. Individual review extraction would need a separate reviews endpoint workflow.

Does this support category URLs?

Not directly. Use a category-specific keyword such as women's running shoes, or pass exact product URLs/TCINs when you already know the catalog items.

This Actor is intended for public product, price, and availability information visible to ordinary Target shoppers. Review Target's terms and get legal advice for your specific use case.

Use cases

  • Price monitoring for Target SKUs
  • UPC enrichment for catalog matching
  • MAP compliance checks
  • Sale and markdown tracking
  • Affiliate product feeds
  • Retail competitor intelligence
  • Local inventory checks by store
  • Building historical Target pricing datasets

Migration from other Target scrapers

The common competitor input below works here too:

curl -X POST "https://api.apify.com/v2/acts/YOUR_USERNAME~target-products-prices-inventory-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"searchQueries": ["lego"],
"maxProducts": 50,
"storeId": "3991",
"fetchProductDetails": true
}'

You can then add this Actor's extra options, such as includeFulfillment, productUrls, tcins, dedupeProducts, and includeRawData, when you need a richer workflow.

Changelog

  • v1.0.0 - Initial RedSky-based Target scraper with keyword search, TCIN/product URL enrichment, PDP details, UPCs, ratings, pricing, images, category data, optional fulfillment, Apify schemas, and compatibility aliases.