Target Product Scraper — Prices, Reviews & Availability avatar

Target Product Scraper — Prices, Reviews & Availability

Under maintenance

Pricing

Pay per usage

Go to Apify Store
Target Product Scraper — Prices, Reviews & Availability

Target Product Scraper — Prices, Reviews & Availability

Under maintenance

Scrape Target.com for product listings with prices, discounts, ratings, reviews, availability, brand, TCIN, variants, images, and store stock. Search by keyword, browse categories, or scrape product URLs. Uses Redsky API for reliable structured data.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Ricardo Akiyoshi

Ricardo Akiyoshi

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

10 minutes ago

Last modified

Categories

Share

Target Product Scraper

Scrape Target.com product listings from search results, category pages, and individual product URLs. Extract product titles, current and sale prices, discount percentages, star ratings, review counts, availability status, brand, TCIN (Target item ID), product variants, image galleries, store availability, and direct product URLs.

Features

  • Four scraping strategies -- HTML search pages, product detail pages (PDP), Target Redsky API (internal JSON API), and category browsing pages. Strategies run in parallel for maximum coverage.
  • Full product details -- title, price, original price, discount, rating, reviews, availability, brand, category, images, variants, store availability, TCIN, product URL
  • Flexible input -- search by keywords, browse by category, or scrape specific product URLs. Combine all three in a single run.
  • Redsky API integration -- taps Target's internal API for structured JSON data, bypassing fragile HTML selectors when possible
  • Price filtering -- set a maximum price to automatically exclude expensive products
  • Smart pagination -- automatically follows Target search and category pages (up to 25 pages per query)
  • Anti-bot handling -- rotates 12 realistic User-Agent strings with full browser headers; detects blocks and falls back to API
  • Deduplication -- skips duplicate products using TCIN and title tracking across all strategies
  • CAPTCHA detection -- detects anti-bot pages and gracefully preserves all data collected so far
  • Proxy support -- optional Apify proxy configuration (residential proxies strongly recommended)
  • Pay-per-event -- charged only for each product successfully scraped

Use Cases

Price Monitoring and Alerts

Track Target product prices over time to detect sales, clearance events, Circle offers, and seasonal trends. Build automated alerts for price drops on specific products or categories.

Retail Analytics and Market Research

Analyze Target's product catalog across departments. Compare pricing, ratings, and review volume to understand market positioning and consumer preferences.

Competitor Intelligence

Monitor how competitor brands appear on Target.com -- pricing strategy, availability, customer ratings, and product placement. Track new product launches and discontinued items.

Inventory and Availability Tracking

Monitor in-store and online availability for high-demand products. Track stock levels across Target locations for supply chain and logistics planning.

Product Comparison and Arbitrage

Compare Target prices against other retailers for price-match opportunities. Identify underpriced or clearance items for resale.

Brand Monitoring

Track your brand's product listings on Target -- pricing compliance, availability status, customer sentiment (ratings/reviews), and variant coverage.

Input

FieldTypeDefaultDescription
searchTermsArray of strings[]Product search keywords (e.g., ["laptop", "coffee maker"])
productUrlsArray of strings[]Direct Target.com product or category URLs
categoryString""Optional department filter (e.g., Electronics, Home, Beauty)
maxPriceInteger0Maximum price in USD (0 = no limit)
maxResultsInteger500Maximum products to scrape (0 = unlimited)
proxyObject(none)Apify proxy settings (residential recommended)

Either searchTerms or productUrls (or both) must be provided. If neither is given, the scraper defaults to searching for "laptop".

Input Examples

Search for multiple product categories

{
"searchTerms": ["wireless headphones", "bluetooth speaker"],
"maxResults": 100
}

Scrape specific product pages

{
"productUrls": [
"https://www.target.com/p/apple-airpods-pro-2nd-generation/-/A-85978612",
"https://www.target.com/p/nintendo-switch-oled-model/-/A-83887498"
]
}

Browse a category with price filter

{
"searchTerms": ["running shoes"],
"category": "Sports & Outdoors",
"maxPrice": 100,
"maxResults": 200
}
{
"searchTerms": ["organic coffee", "protein bars", "vitamins"],
"category": "Grocery",
"maxResults": 1000,
"proxy": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}

Scrape a Target category page directly

{
"productUrls": [
"https://www.target.com/c/laptops-computers-office-electronics/-/N-55ajx"
],
"maxResults": 500
}

Output

Each product is saved to the default dataset with the following fields:

{
"title": "Apple AirPods Pro (2nd Generation) with MagSafe Case",
"price": 189.99,
"originalPrice": 249.99,
"discount": "24% off",
"rating": 4.7,
"reviews": 18432,
"availability": "In Stock",
"brand": "Apple",
"category": "Electronics",
"images": [
"https://target.scene7.com/is/image/Target/GUEST_abc123",
"https://target.scene7.com/is/image/Target/GUEST_def456"
],
"variants": [
{
"name": "Color",
"value": "White",
"tcin": "85978612",
"available": true
}
],
"storeAvailability": "In Stock",
"url": "https://www.target.com/p/apple-airpods-pro-2nd-generation/-/A-85978612",
"tcin": "85978612",
"searchTerm": "airpods",
"scrapedAt": "2026-03-01T12:00:00.000Z"
}

Output Fields

FieldTypeDescription
titleStringFull product title
priceNumber/nullCurrent selling price in USD
originalPriceNumber/nullOriginal or regular price (if on sale)
discountString/nullDiscount percentage (e.g., "24% off")
ratingNumber/nullAverage star rating (1.0 - 5.0)
reviewsNumberNumber of customer reviews
availabilityStringOnline stock status: In Stock, Out of Stock, Limited Stock, Pre-order, Backordered
brandString/nullProduct brand name
categoryString/nullProduct category or department
imagesArrayList of product image URLs
variantsArrayProduct variants (color, size, etc.) with availability
storeAvailabilityString/nullIn-store availability status
urlStringDirect link to the product page on Target.com
tcinString/nullTarget Commerce Item Number (unique product ID)
searchTermStringThe search term used (when applicable)
scrapedAtStringISO 8601 timestamp of when the product was scraped

Dataset Views

The actor provides three pre-configured dataset views:

  1. Products Overview -- full product table with title, price, discount, rating, reviews, availability, brand, and category
  2. Price Analysis -- focused view for price monitoring with current price, original price, discount, brand, and TCIN
  3. Inventory & Variants -- stock tracking view with availability, store availability, variants, and TCIN

Scraping Strategies

This actor uses four complementary strategies to maximize data coverage:

Strategy 1: HTML Search Pages

Parses Target search result pages at /s?searchTerm=.... Extracts data from embedded __TGT_DATA__ JSON blobs, JSON-LD structured data, and HTML product cards as fallback.

Strategy 2: Product Detail Pages (PDP)

Scrapes individual product pages at /p/product-name/-/A-XXXXXXXX. Extracts full product details including variants, image galleries, and store availability from embedded JSON and HTML.

Strategy 3: Target Redsky API

Calls Target's internal Redsky API (redsky.target.com) which returns structured JSON product data. This is the most reliable strategy as it bypasses HTML rendering entirely. Used for both search queries and individual product lookups by TCIN.

Strategy 4: Category Pages

Browses Target category pages at /c/category-name/.... Extracts products from the category grid using the same data extraction pipeline as search pages.

Performance Tips

  1. Use residential proxies -- Target has strong anti-bot protections. Residential proxies are strongly recommended for reliable results.
  2. Start small -- test with maxResults: 10 first to verify the scraper works for your search terms.
  3. Leverage the Redsky API -- the actor automatically uses the Redsky API alongside HTML scraping. If HTML pages are blocked, the API may still work.
  4. Use specific search terms -- more specific searches return more relevant results and require fewer pages.
  5. Set a price filter -- use maxPrice to exclude irrelevant high-priced items and reduce output volume.
  6. Combine strategies -- provide both searchTerms and productUrls to get broad search results plus deep detail on specific products.

Rate Limiting and Blocks

Target has strong anti-bot protections (PerimeterX). This actor handles them by:

  • Rotating 12 realistic browser User-Agent strings per request
  • Sending full browser headers (sec-ch-ua, sec-fetch-*, accept-language, etc.)
  • Limiting to 20 requests/minute by default
  • Detecting CAPTCHA and block pages, falling back to Redsky API
  • Automatic deduplication between HTML and API results
  • Supporting proxy rotation via Apify's residential proxy infrastructure
  • Retrying failed requests up to 3 times

If you see "Anti-bot page detected" in the logs, the scraper continues collecting data via the Redsky API and saves all data collected so far.

Pricing (Pay Per Event)

This actor uses Apify's pay-per-event model. You are charged $0.004 for each product successfully scraped and saved to the dataset. No charge is made for blocked requests, duplicates, or filtered-out products.

This actor is provided as a technical tool for data collection. Users are responsible for ensuring their use complies with Target's Terms of Use and all applicable laws. The actor is designed for personal research, price monitoring, and business analysis purposes. Please review Target's robots.txt and Terms of Service before use.

Integration — Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("sovereigntaylor/target-scraper").call(run_input={
"searchTerm": "target",
"maxResults": 50
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(f"{item.get('title', item.get('name', 'N/A'))}")

Integration — JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('sovereigntaylor/target-scraper').call({
searchTerm: 'target',
maxResults: 50
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach(item => console.log(item.title || item.name || 'N/A'));