Target APItarget.com ↗
Search Target's product catalog by keyword and check real-time in-store availability at nearby Target locations by ZIP code. Returns prices, ratings, and stock.
What is the Target API?
The Target.com API provides 2 endpoints for searching Target's product catalog and checking in-store stock availability. The search_products endpoint returns up to 24 products per page with fields including price, brand, ratings, and TCIN identifiers, while check_store_availability uses those TCINs to surface per-store stock levels and pickup timing at up to 5 nearby locations based on a ZIP code.
curl -X GET 'https://api.parse.bot/scraper/9935e57e-18c2-4c7c-aebe-bc311e983dc8/search_products?zip=10001&count=5&offset=0&keyword=airpods&sort_by=relevance' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace target-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: Target.com SDK — search products, check store availability."""
from parse_apis.target.com_product_search_store_availability_api import Target, Sort, ProductNotFound
client = Target()
# Search for products by keyword, sorted by bestselling
for product in client.products.search(keyword="airpods", sort_by=Sort.BESTSELLING, limit=3):
print(product.title, product.price, product.brand)
# Drill down: take one product and check its in-store availability
product = client.products.search(keyword="nintendo switch", limit=1).first()
if product:
avail = product.check_availability(zip="10001")
print(avail.product.title, avail.product.sold_out)
print(avail.product.shipping.status, avail.product.shipping.min_delivery_date)
for store in avail.product.stores[:3]:
print(store.store_name, store.in_store, store.quantity_available)
# Typed error handling: catch ProductNotFound for an invalid TCIN
try:
bad_product = client.product(tcin="0000000000")
bad_product.check_availability(zip="90210")
except ProductNotFound as exc:
print(f"Product not found: {exc.tcin}")
print("exercised: products.search / product.check_availability / ProductNotFound")
Full-text search over Target.com product catalog by keyword. Returns paginated product listings with pricing, ratings, brand, and availability metadata. Server-side sort controls result ordering. Pagination uses offset-based addressing where each page holds up to `count` items.
| Param | Type | Description |
|---|---|---|
| zip | string | 5-digit US ZIP code for local pricing and store availability |
| count | integer | Number of results per page (max 24) |
| offset | integer | Offset for pagination (0-based) |
| keywordrequired | string | Search keyword (e.g. 'airpods', 'nintendo switch') |
| sort_by | string | Sort order for results |
{
"type": "object",
"fields": {
"count": "integer - number of results returned",
"offset": "integer - current offset",
"keyword": "string - the search keyword used",
"products": "array of product objects with tcin, title, url, image_url, brand, price, regular_price, price_type, current_retail, save_percent, rating, rating_count, item_type",
"total_pages": "integer - total pages available",
"current_page": "integer - current page number",
"total_results": "integer - total number of matching products"
},
"sample": {
"data": {
"count": 24,
"offset": 0,
"keyword": "airpods",
"products": [
{
"url": "https://www.target.com/p/apple-airpods-max-160-2-160-midnight/-/A-80585769",
"tcin": "80585769",
"brand": "Apple",
"price": "$499.99",
"title": "Apple AirPods Max 2 - Midnight",
"rating": null,
"image_url": "",
"item_type": "Headphones",
"price_type": "sale",
"parent_tcin": "1010453160",
"parent_title": "Apple AirPods Max 2",
"rating_count": null,
"save_percent": 9,
"regular_price": "$549.99",
"current_retail": 499.99
}
],
"total_pages": 21,
"current_page": 1,
"total_results": 491
},
"status": "success"
}
}About the Target API
Product Search
The search_products endpoint accepts a required keyword parameter and returns a paginated list of matching products from Target's catalog. Each product object includes tcin (Target's internal product ID), title, url, image_url, brand, price, regular_price, price_type, current_retail, and save_percent. Pagination is controlled via offset (0-based) and count (up to 24 per page), with total_results, total_pages, and current_page returned in every response. Results can be sorted using the sort_by parameter with accepted values of relevance, Featured, bestselling, PriceLow, PriceHigh, and Newest. An optional zip parameter adjusts pricing and availability context to a specific US location.
Store Availability
The check_store_availability endpoint takes a tcin obtained from search_products results and an optional 5-digit zip to find nearby Target stores. The response includes a product object with the tcin, title, url, sold_out flag, shipping status, and a stores array showing per-store availability — including stock quantity and pickup date estimates for up to 5 stores near the provided ZIP. This makes it straightforward to build workflows that first identify a product by keyword and then verify local stock before acting.
The Target API is a managed, monitored endpoint for target.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when target.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official target.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Alert users when a specific product's
sold_outstatus changes at a local Target store - Compare
pricevsregular_priceacross search results to identify active markdowns and computesave_percent - Build a price-tracking tool using
keywordsearch sorted byPriceLoworPriceHigh - Check
store availabilityacross multiple ZIP codes to find the nearest location with a product in stock - Aggregate Target product listings by
brandfor competitive catalog research - Monitor
bestsellingsort results over time to detect trending products in a category - Cross-reference
current_retailandregular_pricedata to surface clearance items
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Target have an official developer API?+
What does the `check_store_availability` endpoint actually return per store?+
stores array within the product object, which also carries top-level sold_out and shipping status fields.Does the API return product reviews or customer ratings?+
search_products endpoint returns rating data as part of each product object. However, individual review text, review counts broken out by star rating, and Q&A content are not currently returned. You can fork the API on Parse and revise it to add an endpoint covering review details for a given TCIN.Is availability data limited to in-store pickup, or does it cover shipping estimates too?+
check_store_availability response includes a shipping status field on the product object alongside the per-store pickup data. Detailed carrier-level shipping estimates or delivery windows by ZIP are not currently broken out as separate fields. You can fork the API on Parse and revise it to expose more granular shipping timeline data.What is the maximum number of results I can retrieve per search request?+
count parameter accepts a maximum of 24 results per page. To retrieve more results, increment the offset parameter using the total_pages and current_page values returned in each response to navigate through the full result set.