Target Product Scraper — Prices, Reviews & Availability
Pricing
Pay per usage
Target Product Scraper — Prices, Reviews & Availability
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
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
| Field | Type | Default | Description |
|---|---|---|---|
searchTerms | Array of strings | [] | Product search keywords (e.g., ["laptop", "coffee maker"]) |
productUrls | Array of strings | [] | Direct Target.com product or category URLs |
category | String | "" | Optional department filter (e.g., Electronics, Home, Beauty) |
maxPrice | Integer | 0 | Maximum price in USD (0 = no limit) |
maxResults | Integer | 500 | Maximum products to scrape (0 = unlimited) |
proxy | Object | (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}
Full scrape with proxies (recommended for large jobs)
{"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
| Field | Type | Description |
|---|---|---|
title | String | Full product title |
price | Number/null | Current selling price in USD |
originalPrice | Number/null | Original or regular price (if on sale) |
discount | String/null | Discount percentage (e.g., "24% off") |
rating | Number/null | Average star rating (1.0 - 5.0) |
reviews | Number | Number of customer reviews |
availability | String | Online stock status: In Stock, Out of Stock, Limited Stock, Pre-order, Backordered |
brand | String/null | Product brand name |
category | String/null | Product category or department |
images | Array | List of product image URLs |
variants | Array | Product variants (color, size, etc.) with availability |
storeAvailability | String/null | In-store availability status |
url | String | Direct link to the product page on Target.com |
tcin | String/null | Target Commerce Item Number (unique product ID) |
searchTerm | String | The search term used (when applicable) |
scrapedAt | String | ISO 8601 timestamp of when the product was scraped |
Dataset Views
The actor provides three pre-configured dataset views:
- Products Overview -- full product table with title, price, discount, rating, reviews, availability, brand, and category
- Price Analysis -- focused view for price monitoring with current price, original price, discount, brand, and TCIN
- 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
- Use residential proxies -- Target has strong anti-bot protections. Residential proxies are strongly recommended for reliable results.
- Start small -- test with
maxResults: 10first to verify the scraper works for your search terms. - Leverage the Redsky API -- the actor automatically uses the Redsky API alongside HTML scraping. If HTML pages are blocked, the API may still work.
- Use specific search terms -- more specific searches return more relevant results and require fewer pages.
- Set a price filter -- use
maxPriceto exclude irrelevant high-priced items and reduce output volume. - Combine strategies -- provide both
searchTermsandproductUrlsto 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.
Legal Notice
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 ApifyClientclient = 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'));