Target.com Product Scraper avatar

Target.com Product Scraper

Pricing

from $0.97 / 1,000 products

Go to Apify Store
Target.com Product Scraper

Target.com Product Scraper

Target.com product dataset from search queries or page URLs, including prices, ratings, optional product details, and customer reviews.

Pricing

from $0.97 / 1,000 products

Rating

0.0

(0)

Developer

Farhan Ali

Farhan Ali

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Target.com Product Scraper creates a structured dataset of products collected from Target.com. Each dataset item represents one product and can include identifiers, title, brand, prices, sale status, rating, review count, image URL, badges, optional detail fields, and optional nested reviews. Query the source with searchQueries or Target search, category, deals, clearance, product, brand, or weekly-ad URLs (startUrls). Control the result limit with maxItems, and retrieve records through the Apify Dataset API or export them as JSON, CSV, Excel, XML, or another supported format.

Dataset at a glance

PropertyValue
Sourcetarget.com (US retail catalog)
Record unitOne Target product, with optional nested reviews
Input methodsSearch terms (searchQueries) and/or Target page URLs (startUrls)
Main identifierstcin, product URL (url)
DeliveryApify Dataset and API
Export formatsJSON, CSV, Excel, XML, HTML (Apify dataset exports)
Update modelFresh records per Actor run
Pricing$1 / 1,000 products; +$1 / 1,000 product details; +$1 / 1,000 products with reviews; Actor start $0.00005

Coverage and available records

The Actor collects public Target.com products from one or both entry points. When both are set, the seeds are combined.

  • Search-based: searchQueries (for example socks, tide pods) run as Target catalog searches.
  • URL-based: startUrls accepts Target search, category, deals, clearance, product, brand, and weekly-ad pages.

Record types and limits:

  • Listing-level records are always collected: tcin, URL, title, brand, price, regular price, formatted price, currency, sale flag, rating, review count, image URL, badges, category id, and source metadata.
  • Product detail fields are conditional: description, highlights, specifications, features, variants, barcode, DPCI, item type, and extra image URLs are returned only when includeProductDetails is enabled.
  • Review records are conditional: a nested reviews array (and reviewStatistics when present) is returned only when includeReviews is enabled. maxReviews caps reviews per product (0 = all available, internally capped; default 10).
  • Store context: storeId (default 3991, the online catalog) and zipCode (default 55401) set local pricing and weekly-ad context.
  • Result cap: maxItems limits products across all queries and URLs (0 means unlimited; default 10). Nested reviews do not count toward maxItems.

Observed sourceType values include search, category, brand, product, and weekly_ad. Pagination continues until the source returns no further products or the cap is reached.

Known exclusions: content Target only shows behind login is not collected; each run captures catalog state at run time (no historical snapshots); the Actor does not follow outbound links to manufacturer sites.

Data dictionary

Field names below match dataset record JSON properties exactly. Fields marked conditional appear only when the corresponding input toggle is enabled. Prices, ratings, and review scores are source values, not calculated by the Actor.

Product listing fields

FieldTypeNullableDescriptionExample
tcinstringNoTarget catalog item number; best stable deduplication key14073500
urlstringNoProduct page URL; secondary deduplication keyhttps://www.target.com/p/hanes-men-39-s-ankle-socks-with-freshiq-8pk-white-6-12/-/A-14073500
titlestringYesProduct titleHanes Men's Ankle Socks with FreshIQ 8pk - White 6-12: Moisture Wicking, Reinforced Heel & Toe
brandstringYesBrand nameHanes
pricenumberYesCurrent price in currency10.0
regularPricenumberYesRegular / comparison price in currency14.0
formattedPricestringYesDisplay price as shown on Target$10.00
currencystringNoISO currency codeUSD
isOnSalebooleanNoWhether Target marks the item on saletrue
ratingnumberYesAverage customer rating4.25
reviewCountnumberYesNumber of customer reviews shown on the listing780
imageUrlstringYesPrimary product image URLhttps://target.scene7.com/is/image/Target/GUEST_a6e47d94-b48d-4448-87d7-c2d2fdadf0eb
badgesstring[]YesListing badges (for example Trending)["Trending"]
categoryIdstringYesCategory identifier from the listing
sourceTypestringNoSeed type that produced the recordsearch
sourceQuerystringNoOriginal search term, URL value, or TCINsocks

Product detail fields (conditional — includeProductDetails)

FieldTypeNullableDescriptionExample
descriptionstringYesProduct description from the product pageLong-form copy
highlightsstring[]YesHighlight bullets["Soft blended fabric", "Pack of 8 ankle length pairs"]
specificationsobject[]YesSpec pairs {name, value}[{"name": "Sizing", "value": "Mens"}]
featuresstring[]YesFeature / bullet texts
variantsobject[]YesRelated variants {tcin, title, url, price, imageUrl}
barcodestringYesPrimary barcode
dpcistringYesTarget DPCI identifier040-11-0190
itemTypestringYesItem type name
imageUrlsstring[]YesGallery image URLs

Review fields (conditional — includeReviews)

Reviews nest on the product; they are not separate dataset items. When present, reviewStatistics can include reviewCount, averageRating, recommendedPercentage, and questionCount.

Each reviews[] object:

FieldTypeNullableDescriptionExample
idstringNoReview identifier
titlestringYesReview titlegreat cushion socks.
textstringYesReview bodymy husband loves the socks.
ratingnumberYesReview score5.0
authorstringYesReviewer nicknameVunserpenk
submittedAtstringYesSubmission timestamp as returned by Target
isVerifiedbooleanNoWhether Target marks the review verifiedtrue
isSyndicatedbooleanNoWhether the review is syndicatedfalse
isIncentivizedbooleanNoWhether the review is incentivizedfalse
photosstring[]YesReview photo URLs[]
helpfulCountnumberYesHelpful-vote count

Example dataset record

Real record produced with the test input below (searchQueries: ["socks"], maxItems: 5, product details and reviews enabled). The reviews array is truncated to one item for readability.

{
"tcin": "14073500",
"url": "https://www.target.com/p/hanes-men-39-s-ankle-socks-with-freshiq-8pk-white-6-12/-/A-14073500",
"title": "Hanes Men's Ankle Socks with FreshIQ 8pk - White 6-12: Moisture Wicking, Reinforced Heel & Toe",
"brand": "Hanes",
"price": 10.0,
"regularPrice": 14.0,
"formattedPrice": "$10.00",
"currency": "USD",
"isOnSale": true,
"rating": 4.25,
"reviewCount": 780,
"imageUrl": "https://target.scene7.com/is/image/Target/GUEST_a6e47d94-b48d-4448-87d7-c2d2fdadf0eb",
"badges": ["Trending"],
"sourceType": "search",
"sourceQuery": "socks",
"dpci": "040-11-0190",
"highlights": [
"Soft blended fabric",
"FreshIQ Advanced Odor Protection Technology",
"Pack of 8 ankle length pairs"
],
"specifications": [
{ "name": "Sizing", "value": "Mens" },
{ "name": "Material", "value": "49% Polyester, 49% Cotton, 1% Spandex, 1% Nylon" }
],
"reviewStatistics": {
"reviewCount": 233,
"averageRating": 4.16,
"recommendedPercentage": 54.0
},
"reviews": [
{
"title": "great cushion socks.",
"text": "my husband loves the socks.",
"rating": 5.0,
"author": "Vunserpenk",
"isVerified": true
}
]
}

The record above was produced with this input:

{
"searchQueries": ["socks"],
"maxItems": 5,
"includeProductDetails": true,
"includeReviews": true,
"maxReviews": 5,
"detailConcurrency": 5,
"storeId": "3991",
"zipCode": "55401",
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}

Query and input reference

InputTypeRequiredDefaultAccepted valuesDescription
searchQueriesarrayNo*Free-text termsTarget search terms; combined with startUrls when both are set
startUrlsarray (requestListSources)No*Target search, category, deals, clearance, product, brand, or weekly-ad URLsURL-based entry point
maxItemsintegerNo100 or any positive integerMaximum products across all seeds; 0 = unlimited
includeProductDetailsbooleanNofalsetrue / falseCollect detail fields (charged as product-details)
includeReviewsbooleanNofalsetrue / falseCollect nested reviews (charged as product-reviews)
maxReviewsintegerNo100 or any positive integerMaximum reviews per product; 0 = all available, internally capped
detailConcurrencyintegerNo5115Parallel enrichment workers when details or reviews are enabled
storeIdstringNo3991Target store IDStore used for local pricing and weekly ads (3991 = online catalog)
zipCodestringNo55401US ZIP codeZIP sent with listing and product requests for store-local pricing
proxyConfigurationobjectNoApify proxy, RESIDENTIAL groupApify proxy groups or custom proxiesResidential proxies are recommended

* Provide at least one of searchQueries or startUrls.

Minimal request:

{ "searchQueries": ["socks"] }

Advanced request (URL entry point with enrichment and store context):

{
"startUrls": [{ "url": "https://www.target.com/s?searchTerm=socks" }],
"maxItems": 100,
"includeProductDetails": true,
"includeReviews": true,
"maxReviews": 10,
"detailConcurrency": 5,
"storeId": "3991",
"zipCode": "55401",
"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}

Retrieve the data through the API

Records are delivered through the Apify Actor and Dataset APIs — not an official Target API.

  1. Start the Actor with a JSON input (console or API).
  2. Wait for the run to finish, or use a synchronous endpoint if you want the response inline.
  3. Retrieve items from the run's default dataset.
  4. Paginate or export the dataset.

Python example:

from apify_client import ApifyClient
client = ApifyClient("YOUR-APIFY-TOKEN")
run_input = {
"searchQueries": ["socks"],
"maxItems": 10,
"includeProductDetails": True,
}
run = client.actor("datascrapers/target-scraper").call(run_input=run_input)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["tcin"], item["title"], item["formattedPrice"])

Apify generates ready-to-run Python, JavaScript, and cURL examples on the Actor's API tab. Do not put a real API token in shared code or URLs.

Data quality and record handling

  • Conditional fields: detail and review fields are present only when their input toggle is enabled. Listings alone return a leaner record.
  • Source changes: Target page structure and values can change; unreadable fields are returned as null or omitted rather than fabricated.
  • Deduplication: each run appends fresh records. The Actor does not deduplicate products across runs. Use tcin as the stable key, or url as a secondary key, and filter repeated runs against previously stored identifiers.
  • Failures: one failed product or seed does not stop the run. The run stops if a spending limit is reached (see run log). maxItems caps products; maxReviews caps nested reviews.
  • Normalization: prices and ratings are stored as numbers; currency is USD; isOnSale is a boolean. Display strings such as formattedPrice remain as Target renders them.

Export and pipeline examples

DestinationRecommended methodTypical use
PostgreSQL / SupabaseDataset API poll or webhook consumerStore catalog prices and TCINs alongside inventory records
Google SheetsApify Google Sheets integrationShare shortlists and sale flags with merchandising teams
PIM / catalog systemsDataset API or completion webhookProduct-feed refresh
S3 / cloud storageScheduled export via Apify scheduler + integrationArchival of price and assortment snapshots

Pricing and cost examples

The Actor uses pay-per-event pricing. Each run also charges a one-time Actor start. Compute units and proxies are billed by your Apify plan.

EventTriggerRate
Actor startOnce per run$0.00005
dataset-itemEach product written to the dataset$0.001 / product ($1 / 1,000)
product-detailsDetails collected (includeProductDetails)$0.001 / product ($1 / 1,000)
product-reviewsReviews collected for a product (includeReviews)$0.001 / product ($1 / 1,000)

Example costs (Actor start is negligible; plan-tier discounts not applied):

RecordsConfigurationEstimated base cost
1,000Listing only$1.00
10,000Listing only$10.00
1,000Listing + product details$2.00
1,000Listing + details + reviews$3.00
10,000Listing + details + reviews$30.00

product-reviews is charged once per product when reviews are fetched, not once per nested review. Estimates depend on the verified pricing model and the options selected for the run.

Limitations and responsible data use

  • The Actor collects publicly accessible data from Target.com pages only.
  • Field availability depends on what Target renders at run time for the selected store and ZIP; some values can be null or missing, and site changes can alter fields.
  • The Actor does not provide historical snapshots unless you store them yourself.
  • Large runs work more reliably with residential proxies; without them, coverage may degrade.
  • You are responsible for compliance with Target's terms of service, applicable privacy law, and any contractual obligations before using the data.

Dataset questions

What does one dataset item represent?

One Target product. Review records are nested inside the product as a reviews array, so a product with 50 reviews still produces a single dataset item. maxItems caps products, not reviews.

Which field should I use as a unique identifier?

tcin is the Target catalog item number and is the recommended deduplication key. url is a reasonable secondary key.

Are fields nullable or conditional?

Yes. Detail fields exist only when includeProductDetails is enabled; reviews and reviewStatistics exist only when includeReviews is enabled. Within available records, fields that Target does not render for a product are returned as null or omitted.

Can I retrieve the records as CSV or JSON?

Yes. The dataset can be exported as JSON, CSV, Excel, XML, or HTML from the Apify Console, and queried through the Dataset API.

How do I paginate large datasets?

Use the Apify Dataset API to page through items after the run finishes (offset and limit on the dataset items endpoint), or export the full dataset. During collection, raise maxItems (or set 0 for unlimited) if you need more products in one run.

Does the Actor return historical data?

No. Each run captures the state of the catalog at run time. To track price or assortment changes, schedule repeated runs and store the outputs yourself.

What counts as a billable result?

Four pay-per-event charges can apply: Actor start once per run ($0.00005), a dataset-item for every product record ($0.001), a product-details charge for each enriched product ($0.001), and a product-reviews charge for each product whose reviews are fetched ($0.001). A listing-only run incurs Actor start plus dataset-item.

  • Amazon Search Scraper — Marketplace product listings that can be joined with Target records by title or brand for cross-retailer price comparison.
  • Best Buy Product Scraper — Electronics and appliance records for the same monitoring pipelines.
  • Costco Product Scraper — Warehouse-club products that overlap Target grocery, household, and general-merchandise categories.
  • IKEA Product Scraper — Home and furniture catalog records for assortment comparison with Target home goods.
  • Flipkart Product Scraper — Marketplace product and review records for additional retail-price datasets.
  • HomeDepot Scraper — Home-improvement product data alongside Target housewares and seasonal categories.

Data Scrapers support

Need an additional field, record type, or export workflow? Contact Data Scrapers at stardustspotlight@gmail.com. Include a sample source URL, required fields, expected record volume, and preferred delivery format.