POST /api/tractorsupply/products
Price: 20 credits
Get a Tractor Supply product: regional price, store stock, rating, description, documents, variants with UPC codes, promotions and attributes
Pass a product id from Tractor Supply search or category results, or a product URL. Pass zip_code to get the price and stock of the nearest store; without it the product carries the lowest and highest regional price.
access-token string requiredtimeout integer — Max scrapping execution timeout (in seconds) (default: 300; min: 20; max: 1500)zip_code string nullable — US ZIP code; the nearest Tractor Supply store sets price and stock (examples: "08085")product string required — Tractor Supply product id or product URL (examples: "154707599", "https://www.tractorsupply.com/tsc/product/paws-claws-clump-and-scoop-unscented-clumping-cat-litter-50-lb"; minLength: 1)@type string (default: "TractorsupplyProduct")id string requiredname string nullableurl string nullableimage string nullablebrand string nullablemanufacturer string nullablemanufacturer_part_number string nullablecatalog_entry_id string nullableselected_variant_id string nullableprice number nullableprice_min number nullableprice_max number nullablecurrency string nullablelist_price number nullablesavings number nullableprice_type string nullablemap_price number nullablemap_list_price number nullablemap_policy string nullablestore_id string nullableprice_zone string nullableis_in_stock_at_store boolean nullableis_in_transit_to_store boolean nullablerating number nullablereview_count integer nullableavailability string nullableshipping_message string nullablecountry_of_origin string nullablecolor string nullablecolor_family string nullabledescription string nullablebadges array (default: [])category_ids array (default: [])is_buyable boolean nullableis_prescription boolean nullableis_pickup_allowed boolean nullableis_same_day_delivery_eligible boolean nullableis_standard_delivery_eligible boolean nullableis_parcel_delivery_from_store_eligible boolean nullableis_subscribable boolean nullableis_hazmat boolean nullableis_truck_delivery boolean nullablepromotions array (default: [])@type string (default: "TractorsupplyPromotion")id string nullablemessage string requireddiscount_type string nullablediscount_value number nullablemax_discount number nullableis_subscription boolean nullablefulfillment_types array (default: [])options array (default: [])@type string (default: "TractorsupplyAttribute")name string requiredvalue string requiredattributes array (default: [])@type string (default: "TractorsupplyAttribute")name string requiredvalue string requiredattachments array (default: [])@type string (default: "TractorsupplyAttachment")name string nullableurl string requiredvariants array (default: [])@type string (default: "TractorsupplyVariant")id string requiredcatalog_entry_id string nullablemanufacturer_part_number string nullableupc string nullableurl string nullableimage string nullablecolor string nullableavailability string nullableoptions array (default: [])@type string (default: "TractorsupplyAttribute")name string requiredvalue string requiredprice number nullablelist_price number nullablesavings number nullableprice_type string nullablemap_price number nullablemap_list_price number nullablepromotions array (default: [])@type string (default: "TractorsupplyPromotion")id string nullablemessage string requireddiscount_type string nullablediscount_value number nullablemax_discount number nullableis_subscription boolean nullablefulfillment_types array (default: [])attributes array (default: [])@type string (default: "TractorsupplyAttribute")name string requiredvalue string required422 — The ZIP code has no nearby Tractor Supply store. Check the fields against this schema. A URN with the wrong prefix is the most common cause.408 — The request ran past its time limit Raise `timeout` in the request body, up to the maximum this endpoint documents. Lowering `count` or turning off the `with_*` flags also helps, because less work finishes sooner.412 — No Tractor Supply product has this id or URL. Retrying will not help: either the entity does not exist, or the input points at a different one.429 — Too many requests: a rate limit or a usage window is exhausted When the response carries an X-Retry-After header, wait that many seconds and retry: the same number is in the body as `detail.retry_after`, and the limit clears once that window passes. The message in the body names the limit that was hit.500 — Something broke on our side Retrying will not help. If it keeps happening, send us the X-Request-ID from the response headers.529 — Rate limit reached, or the endpoint is overloaded Wait at least 30 seconds, then retry.X-Error — Error message text (present only on error)X-Request-ID — Unique request identifierX-Execution-Time — Execution time in secondsX-Result-Count — How many records the body carries. 0 means an empty result, which is a normal answer and not by itself an error. A non-zero count can come back together with X-Error when the failure happened partway through — read this header and X-Error independently.X-Total-Available-Results — How many records exist for this query, when the endpoint can say. On a `dry_run` request this is the answer and the body is empty. It saturates: the endpoint's documented maximum means 'at least that many', any smaller number is exact.X-Warning — Present when the request body carried keys this endpoint does not document. They were ignored, so any filter you meant to apply through them did not apply. Check the spelling against this schema and retry.X-Retry-After — Seconds to wait before retrying. Present only on 429.