Request a tool
All toolsAutomationsGuidesMCP serverRequest a toolPlatformsCategories
Target.com Product Scraper icon

Target.com Product Scraper

Scrape Target.com by keyword, category or product link. TCIN, price, promotions, rating, shipping and store pickup stock, images and URL. No API key.

44 runs on Apify $0.00078 per product ($0.78 / 1,000)
Run this in the cloudRun on Apify →

Developer & Research Tools

How it works

  1. 1
    Open it on Apify

    Hit Run on Apify — it opens the tool in the cloud, no install.

  2. 2
    Set the inputs

    Adjust searchTerms, startUrls, maxItems (sensible defaults are pre-filled).

  3. 3
    Click Run

    The tool runs on Apify’s cloud and collects the data for you.

  4. 4
    Export the results

    Download as JSON, CSV or Excel, or pipe straight into your app, Google Sheets, or an AI agent.

Pricing

$0.00078 per product = $0.78 per 1,000

You are charged forWhenPrice
Product returnedOne product returned in the dataset. Similarity fallbacks, diagnostics and the labelled sample row are not charged.$0.00078

Pay-per-event pricing: you are billed per result, not per subscription. Billing is handled by Apify on your own account. These are the live Apify store prices, in effect since 2026-09-20, and they are what you are actually charged.

Inputs

FieldWhat it doesType
searchTermsWhat to look up on target.com, one per line — "air fryer", "lego", "paper towels". Each term is searched separately and every product it returns becomes a row.array
startUrlsPaste Target pages instead of typing terms. Search pages (https://www.target.com/s?searchTerm=air+fryer), category and brand pages (…/-/N-5xtg6) and single product pages (…/-/A-92084780) all work, mixed together. Product links always come back with the full description.array
maxItemsHard cap on products returned across everything above. You pay per product, so this is what bounds the bill. Target stops any one search or category at 1,227 products.integer
zipCodeA five-digit US postcode, for example 55403. It picks the nearest Target store for pickup stock. It does not change the price: on every test run with a postcode, prices still came from Target's online store (pricedAtStoreId 3991). Leave it empty if you do not need pickup stock.string
includeAvailabilityLook up whether each product ships, is sold out, and — when a postcode is set — whether it is on the shelf for pickup. Costs one extra request per 30 products.boolean
includeFullDetailFetch each product's own page data for the long description and the star-by-star review breakdown. This is one extra request per product, so a 500-product run takes noticeably longer. Product links pasted into "Target URLs" always get this regardless.boolean

What you get

A structured dataset — each result includes fields like:

titlebrandpriceregularPriceonSalesavingsPercentratingreviewCountonlineAvailabilitypickupAvailabilitypromotionsprimaryImagetcinurl

Export every run as JSON, CSV or Excel, or send it to your app, a database, Google Sheets, or an AI agent.

Related tools in Developer & Research Tools

Other ready-to-run tools in the same category — all pay-per-use on the Apify cloud.

GitHub Scraper iconDeveloper & Research Tools

GitHub Scraper

Search GitHub repos and users: stars, forks, language, topics, licence, plus user bio, company and followers. No token needed. $0.90 per 1,000 rows.

18 use cases

Stack Overflow / Stack Exchange Scraper iconDeveloper & Research Tools

Stack Overflow / Stack Exchange Scraper

Search Stack Overflow and Stack Exchange by keyword or tag. Score, answer count, views, reputation and body text. $2 per 1,000 questions.

2 use cases

Package Registry Scraper (npm + PyPI) iconDeveloper & Research Tools

Package Registry Scraper (npm + PyPI)

Get npm and PyPI package metadata as JSON. Version, license, author, repo, keywords and npm monthly downloads. $2 per 1,000 packages.

2 use cases

arXiv Scraper iconDeveloper & Research Tools

arXiv Scraper

Search arXiv papers by title, author, abstract or category. Get full abstracts, authors, categories, DOI, dates and PDF links. $2 per 1,000 papers.

2 use cases

OpenAlex Scholarly Works Scraper iconDeveloper & Research Tools

OpenAlex Scholarly Works Scraper

Search 250M+ OpenAlex papers with no API key. Get titles, authors, venue, year, citations, DOI, OA links and full abstracts. $2.00 per 1,000 papers.

2 use cases

Crossref Scholarly Works Scraper iconDeveloper & Research Tools

Crossref Scholarly Works Scraper

Search 150M+ papers on Crossref: DOI, title, authors, journal, publisher, date, citations and abstract. No API key. $1.00 per 1,000 works.

2 use cases

See all Developer & Research Tools →

Target.com Product Scraper: prices, promotions and pickup stock from target.com

Type a search term, or paste a Target search, category, brand or product link. You get one row per product: TCIN, title, brand, today's price and any markdown, promotions, star rating and review count, whether it ships, whether a nearby store has it for pickup, the images and the link. A postcode sets the pickup store, but on every test run checked the price still came from Target's online store (pricedAtStoreId 3991), and any one search or category stops at 1,227 products.

InputSearch terms, or Target search, category, brand or product links
OutputOne row per product
Ceiling2,000 products per run, and 1,227 per search or category
Account neededNone
Price$0.78 per 1,000 products, flat on every plan

🔍 What Target.com Product Scraper does

Each search term is run separately and every product it returns becomes a row. Category and brand links work the same way, and pasted product links are fetched first, so a broad category can never use up maxItems before the products you named.

Target never answers a search with "no matches". Ask for something it does not stock and it returns a page of 28 products that have nothing to do with the question. So the first page of every keyword search is checked against the words you typed, and if almost none of the titles mention them, you get one free NO_MATCH note instead of 28 charges. The check was tuned on 66 real shopping terms, none of which it rejected, including "bed sheets", where every product is titled "Sheet Set". It is loose in the other direction on purpose: dropping a real result is worse than letting a weak one through. Category and brand links skip the check.

Without a postcode you get Target's online view: shipping status, sold-out flags, delivery status and a ship-by date, with the pickup fields left null. Add a postcode and the nearest store's pickup status, name and unit count fill in.

Three hundred products took 18 seconds on a test run.

📥 What you give it

{
  "searchTerms": ["air fryer"],
  "zipCode": "55403",
  "maxItems": 12
}
FieldIf you leave it outWhat it is
searchTermsnoneWhat to look up, one per line, such as air fryer or paper towels.
startUrlsnoneTarget search pages, category and brand pages (/-/N-5xtg6) and product pages (/-/A-92084780), mixed freely. Product links always come back with the full description.
maxItems501 to 2,000 products across everything above. You pay per product, so this bounds the bill.
zipCodenoneA five-digit US postcode. Sets the store for pickup stock.
includeAvailabilityonWhether each product ships, is sold out and, with a postcode, is on the shelf for pickup.
includeFullDetailoffAdds the long description, the barcode and the star-by-star review count. A large run takes noticeably longer with it on.
proxyConfigurationnot usedOnly for your own servers. Addresses you list here are used as given. Leave it alone otherwise.

A category link is a node id: in target.com/c/anything/-/N-5xtg6, the 5xtg6 is what matters. The form opens with air fryer and a cap of 50 filled in, as an example.

📤 What you get back

A real row from a real run with postcode 55403, with the image, highlight and specification lists cut short:

{
  "tcin": "92084780",
  "title": "Gourmia Digital 3qt Air Fryer with Guided Cooking Prompts Black/Stainless Steel Finish",
  "brand": "Gourmia",
  "url": "https://www.target.com/p/digital-3qt-air-fryer-with-guided-cooking-prompts-black-stainless-steel-finish/-/A-92084780",
  "price": 39.99,
  "formattedPrice": "$39.99",
  "regularPrice": 39.99,
  "comparisonPrice": null,
  "onSale": false,
  "savingsAmount": null,
  "savingsPercent": null,
  "unitPrice": null,
  "unitPriceSuffix": null,
  "priceType": "reg",
  "priceNote": null,
  "pricedAtStoreId": "3991",
  "promotions": [],
  "rating": 4.18,
  "reviewCount": 471,
  "onlineAvailability": "IN_STOCK",
  "soldOut": false,
  "outOfStockInAllStores": false,
  "pickupAvailability": "IN_STOCK",
  "pickupStoreId": "1375",
  "pickupStoreName": "Mpls Nicollet Mall",
  "pickupQuantity": 6,
  "scheduledDeliveryAvailability": "IN_STOCK",
  "shipsBy": "2026-09-21",
  "primaryImage": "https://target.scene7.com/is/image/Target/GUEST_6ec22cbf-b531-4468-86ce-f0194548211b",
  "images": ["https://target.scene7.com/is/image/Target/GUEST_6ec22cbf-b531-4468-86ce-f0194548211b"],
  "dpci": "072-04-6561",
  "upc": null,
  "itemType": "Electric Fryers",
  "departmentId": "72",
  "classId": "4",
  "categoryId": "ncrpx",
  "highlights": [
    "3-quart air fryer can cook for one or a few",
    "8 One-Touch Cooking Functions eliminate guesswork"
  ],
  "specifications": [
    "Dimensions (Overall): 10.47 Inches (H) x 11.46 Inches (W) x 8.98 Inches (D)",
    "Capacity (Volume): 3 Quart"
  ],
  "description": null,
  "ratingDistribution": null,
  "searchTerm": "air fryer",
  "position": 1,
  "scrapedAt": "2026-09-20T00:46:59.705Z"
}

A marked-down product from another real run, price fields only:

{
  "tcin": "94986645",
  "price": 99.99,
  "regularPrice": 99.99,
  "comparisonPrice": 159.99,
  "onSale": true,
  "savingsAmount": 60,
  "savingsPercent": 38
}
FieldWhat it is
tcinTarget's product number, the digits after A- in a product link. Stable, so use it to join runs.
price, regularPrice, comparisonPrice, onSaleOn a markdown, the old price is in comparisonPrice and regularPrice equals the current one. Read onSale first.
savingsAmount, savingsPercentFilled when Target shows a was/now price.
unitPrice, unitPriceSuffixGrocery and household items, such as $0.36 and /ounce.
pricedAtStoreIdWhich store the price is for. 3991 is Target's online store.
promotionsEach with message, promotionId, type, thresholdType, thresholdValue, rewardType and rewardValue.
onlineAvailability, soldOut, outOfStockInAllStores, scheduledDeliveryAvailability, shipsByThe online and delivery picture.
pickupAvailability, pickupStoreId, pickupStoreName, pickupQuantityNeed a postcode. pickupQuantity can be null while the status says in stock; the status is the reliable one.
dpci, upcTarget's shelf number and the barcode. upc needs full detail or a pasted product link.
description, ratingDistributionThe long copy and the count at each star. Same rule as upc.
highlights, specifications, itemType, departmentId, classId, categoryIdThe product page bullets and Target's own classification.

🧾 Reading the output

Real product rows have no charged field. The free rows carry charged: false, so dropping those leaves only products.

RowHow to spot itCharged
A producta tcin and no charged fieldyes
The sample_sample: trueno
A note_diagnostic: true, with an errorCode, an error and a hintno

The sample appears only when a run has no search terms and no links. It looks like a real product row, so filter on _sample or charged rather than on the fields.

errorCodeWhat it means
NO_MATCHTarget stocks nothing for that term and answered with unrelated products, which were left out. The note carries a relevance score.
NO_RESULTSTarget returned no products for that term or link.
NOT_FOUNDNo product behind that TCIN. They change when Target merges or retires a listing.
BAD_URLNot a Target search, category, brand or product link.
ZIP_NOT_FOUNDNo store near that postcode. The run carries on with online prices.
LIMIT_REACHEDmaxItems was used up before that search or those links, so they were not fetched.
TARGET_UNREACHABLE, BLOCKED, FAILEDTarget did not answer that part of the run. Re-running usually clears it.

▶️ How to run it

1. Open Target.com Product Scraper and click Try for free. 2. Type what you want into Search terms, or paste pages into Target URLs. 3. Set Maximum products. 4. For pickup stock at a store, fill in US postcode (optional). 5. Click Start, then download the dataset as JSON, CSV or Excel.

💰 How much does it cost?

$0.78 per 1,000 products, flat on every Apify plan. Stock and full detail cost nothing extra.

Not charged: the sample row, every note above, the unrelated products behind a NO_MATCH, and a product that turns up under two searches, which is delivered once. If you set a maximum cost for the run, it stops there and says so in its status.

💡 What people use it for

  • Watching a fixed list of products. Paste their links, schedule the run, and the rows line up on

tcin from one run to the next.

  • Catching markdowns across a category, using onSale and comparisonPrice.
  • Checking whether one store has an item on the shelf before driving there.
  • Pulling DPCI, UPC and Target's classification for a product list.

🚧 What it does not do

  • No review text. The star average, the review count and, with full detail, the count at each

star.

  • Pickup stock for one store only, the nearest to your postcode. Checking forty stores is a

different job.

  • No store-level prices, as far as testing shows. pricedAtStoreId read 3991 on every row of

every test run checked, with a postcode or without.

  • No variants as rows. A shirt in six colours is one row, the one Target shows in the listing.
  • Nothing behind a sign-in. No Circle member pricing, no order history.
  • target.com only. Target Australia is a different company.
  • No sponsored placements. Paid slots in the results are skipped, so this is the wrong tool for

studying ads.

  • Prices move. A row is what target.com showed at scrapedAt.

🧭 Which retail scraper do you need?

If you wantUse
Target products with promotions and pickup stockThis one
Lowe's products with store price, stock and specsLowe's Product Scraper
Amazon products by keyword or ASINAmazon Scraper
A Shopify store's whole catalogueShopify Products Scraper
An alert when any product page changes price or stockProduct Price and Stock Monitor

❓ Questions people ask

Do I need a Target account or an API key? No. Nothing is signed in and there is no key to get.

Can I scrape a whole category? Up to 1,227 products of it, which is Target's own ceiling. For more, search the sub-categories separately.

Why did my search give a note instead of products? Target had nothing matching and answered with unrelated items, so they were left out rather than billed. If you think that was wrong, a category or brand link fetches the products with no check.

What is a TCIN, and what is a DPCI? The TCIN is Target's product number online and the one to join on. The DPCI is its shelf number in stores.

Why is pickupQuantity null when the item is in stock? Target does not publish a unit count for every item. Trust pickupAvailability.

Is this legal? It reads what target.com shows anyone who is not signed in. Apify's write-up on the legality of web scraping is a good starting point. We are not lawyers.

🆘 If something breaks

Open the Issues tab on the actor page and send the input you used and the run ID. The note rows in the dataset usually name the reason already.