GOAT data, ready when you are.
Resale products, listings and asks from GOAT.
- See the price before every call
- Pay only for records that come back
- No subscription. Your balance never expires
What you can get.
- $0.0009per recordTry it →
Products
Full detail for up to ten GOAT products by URL or slug. Every size with its asking price and availability, max offer, retail price.
- $0.0009per recordTry it →
Search
Keyword search on GOAT. Every hit a full product card.
- $0.0009per recordTry it →
Listing
A brand or collection page URL. Its products in page order.
What the data looks like.
| productName | brand | sku | colorway | category | gender | releaseDate | retailPrice | lowestAsk | slug | productId | productUrl | isResellable | images | details |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Runner 90 'Sea Salt' | Stride | ST90-102 | Sea Salt/White | sneakers | men | 2026-03-14 | 130 | 182 | runner-90-sea-salt | 3890853960 | https://www.goat.com/runner-90-sea-salt-1000 | false |
|
|
| Court Classic Low 'Black' | Corvo | CC-LOW-001 | Black/Black | sneakers | unisex | 2025-11-02 | 110 | 96 | court-classic-low-black | 1913871840 | https://www.goat.com/court-classic-low-black-1001 | false |
|
|
| Trail Pro GTX 'Moss' | Stride | TPG-330 | Moss/Grey | sneakers | men | 2026-08-21 | 170 | 215 | trail-pro-gtx-moss | 383298771 | https://www.goat.com/trail-pro-gtx-moss-1002 | false |
|
|
For developers
API reference.
One endpoint, POST /v1/goat. Open an operation to see its fields.
Productsproducts
Full detail for up to ten GOAT products by URL or slug. Every size with its asking price and availability, max offer, retail price.
| Field | Type | Meaning |
|---|---|---|
| subjects * | list of string · 1-10 items | |
| country | string · ISO alpha-2 |
Response fields, each row of data
| Field | Type |
|---|---|
| slug | string |
| productId | string |
| productName | string |
| sku | string |
| productUrl | string |
| brand | string |
| colorway | string |
| color | string |
| category | string |
| subcategory | string |
| categoryLevel3 | string |
| categoryLevel4 | string |
| activities | list of string |
| gender | string |
| releaseDate | string |
| season | string |
| story | string |
| styleTags | list of string |
| detailTags | list of string |
| merchandisingTags | list of string |
| specialType | string |
| isResellable | boolean |
| directShipping | boolean |
| maxOffer | number |
| sizeType | string |
| sizeUnit | string |
| retailPrice | number |
| images | list of string |
| attributes | any |
| listings | any |
| lowestAsk | number |
| details | object |
Every field is present on every row: a value the source had nothing for is null, an empty list is []. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.
curl -X POST https://apiforagents.dev/v1/goat \
-H "Authorization: Bearer $AFA_KEY" \
-H "Content-Type: application/json" \
-d '{"op":"products","subjects":["https://www.goat.com/sneakers/<product-slug>"],"country":"US"}'Example response rows
[
{
"productName": "Runner 90 'Sea Salt'",
"brand": "Stride",
"sku": "ST90-102",
"colorway": "Sea Salt/White",
"category": "sneakers",
"gender": "men",
"releaseDate": "2026-03-14",
"retailPrice": 130,
"lowestAsk": 182,
"slug": "runner-90-sea-salt",
"productId": "3890853960",
"productUrl": "https://www.goat.com/runner-90-sea-salt-1000",
"isResellable": false,
"images": [
"https://img.goat.com/runner-90-sea-salt.jpg"
],
"details": {}
},
{
"productName": "Court Classic Low 'Black'",
"brand": "Corvo",
"sku": "CC-LOW-001",
"colorway": "Black/Black",
"category": "sneakers",
"gender": "unisex",
"releaseDate": "2025-11-02",
"retailPrice": 110,
"lowestAsk": 96,
"slug": "court-classic-low-black",
"productId": "1913871840",
"productUrl": "https://www.goat.com/court-classic-low-black-1001",
"isResellable": false,
"images": [
"https://img.goat.com/court-classic-low-black.jpg"
],
"details": {}
}
]An example to show the shape. The rows show the most used fields; a live row carries every field in the table above.
Searchsearch
Keyword search on GOAT. Every hit a full product card.
| Field | Type | Meaning |
|---|---|---|
| query * | string · ≤300 chars | |
| country | string · ISO alpha-2 | |
| limit | integer · 1-100 |
Response fields, each row of data
| Field | Type |
|---|---|
| slug | string |
| productId | string |
| productName | string |
| sku | string |
| productUrl | string |
| brand | string |
| colorway | string |
| color | string |
| category | string |
| subcategory | string |
| categoryLevel3 | string |
| categoryLevel4 | string |
| activities | list of string |
| gender | string |
| releaseDate | string |
| season | string |
| story | string |
| styleTags | list of string |
| detailTags | list of string |
| merchandisingTags | list of string |
| specialType | string |
| isResellable | boolean |
| directShipping | boolean |
| maxOffer | number |
| sizeType | string |
| sizeUnit | string |
| retailPrice | number |
| images | list of string |
| attributes | any |
| listings | any |
| lowestAsk | number |
| details | object |
Every field is present on every row: a value the source had nothing for is null, an empty list is []. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.
curl -X POST https://apiforagents.dev/v1/goat \
-H "Authorization: Bearer $AFA_KEY" \
-H "Content-Type: application/json" \
-d '{"op":"search","query":"Nike Dunk Low","country":"US","limit":20}'Example response rows
[
{
"productName": "Runner 90 'Sea Salt'",
"brand": "Stride",
"sku": "ST90-102",
"colorway": "Sea Salt/White",
"category": "sneakers",
"gender": "men",
"releaseDate": "2026-03-14",
"retailPrice": 130,
"lowestAsk": 182,
"slug": "runner-90-sea-salt",
"productId": "3696258439",
"productUrl": "https://www.goat.com/runner-90-sea-salt-1000",
"isResellable": false,
"images": [
"https://img.goat.com/runner-90-sea-salt.jpg"
],
"details": {}
},
{
"productName": "Runner 90 'Night'",
"brand": "Stride",
"sku": "ST90-001",
"colorway": "Black/Gum",
"category": "sneakers",
"gender": "men",
"releaseDate": "2026-01-20",
"retailPrice": 130,
"lowestAsk": 158,
"slug": "runner-90-night",
"productId": "228523151",
"productUrl": "https://www.goat.com/runner-90-night-1001",
"isResellable": false,
"images": [
"https://img.goat.com/runner-90-night.jpg"
],
"details": {}
}
]An example to show the shape. The rows show the most used fields; a live row carries every field in the table above.
Listinglisting
A brand or collection page URL. Its products in page order.
| Field | Type | Meaning |
|---|---|---|
| subject * | string · ≤400 chars | The listing page URL. |
| country | string · ISO alpha-2 | |
| limit | integer · 1-100 |
Response fields, each row of data
| Field | Type |
|---|---|
| slug | string |
| productId | string |
| productName | string |
| sku | string |
| productUrl | string |
| brand | string |
| colorway | string |
| color | string |
| category | string |
| subcategory | string |
| categoryLevel3 | string |
| categoryLevel4 | string |
| activities | list of string |
| gender | string |
| releaseDate | string |
| season | string |
| story | string |
| styleTags | list of string |
| detailTags | list of string |
| merchandisingTags | list of string |
| specialType | string |
| isResellable | boolean |
| directShipping | boolean |
| maxOffer | number |
| sizeType | string |
| sizeUnit | string |
| retailPrice | number |
| images | list of string |
| attributes | any |
| listings | any |
| lowestAsk | number |
| details | object |
Every field is present on every row: a value the source had nothing for is null, an empty list is []. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.
curl -X POST https://apiforagents.dev/v1/goat \
-H "Authorization: Bearer $AFA_KEY" \
-H "Content-Type: application/json" \
-d '{"op":"listing","subject":"https://www.goat.com/brand/nike","country":"US","limit":20}'Example response rows
[
{
"productName": "Court Classic High 'White'",
"brand": "Corvo",
"sku": "CC-HI-100",
"colorway": "White/White",
"category": "sneakers",
"gender": "unisex",
"releaseDate": "2026-02-01",
"retailPrice": 125,
"lowestAsk": 118,
"slug": "court-classic-high-white",
"productId": "4001860239",
"productUrl": "https://www.goat.com/court-classic-high-white-1000",
"isResellable": false,
"images": [
"https://img.goat.com/court-classic-high-white.jpg"
],
"details": {}
},
{
"productName": "Court Classic Low 'Sail'",
"brand": "Corvo",
"sku": "CC-LOW-210",
"colorway": "Sail/Gum",
"category": "sneakers",
"gender": "unisex",
"releaseDate": "2026-06-12",
"retailPrice": 110,
"lowestAsk": 124,
"slug": "court-classic-low-sail",
"productId": "4294050896",
"productUrl": "https://www.goat.com/court-classic-low-sail-1001",
"isResellable": false,
"images": [
"https://img.goat.com/court-classic-low-sail.jpg"
],
"details": {}
}
]An example to show the shape. The rows show the most used fields; a live row carries every field in the table above.
Historyhistoryfree
Stored ask/offer series of products already held. Free.
| Field | Type | Meaning |
|---|---|---|
| subjects * | list of string · 1-10 items | |
| metric | enum | lowest_ask · max_offer · retail_price |
| days | integer · 1-730 |