Sneaker and streetwear resale price tracking
Use GOAT endpoints to turn sneaker and streetwear resale price tracking into repeatable API requests with documented inputs and JSON responses.
Turn GOAT's public resale marketplace into structured JSON — faceted catalog search across sneakers, apparel, accessories, bags, and collectibles by brand, colorway, gender, condition, release year, and price band, product detail combining descriptive metadata with live per-size lowest-ask, Instant Ship, last-sold and highest-offer pricing, GOAT's own curated editorial collections, and the recommended products its product pages surface. Credential-free.
Search GOAT sneakers, streetwear, and collectibles with full facet filters, and get product detail with live per-size resale pricing as JSON.
Endpoint families
6
Documented params
42
Examples
10
Live catalog snapshot
Active endpoints
10
Methods
GET
Required params
14
Schema refs
10
{
"platform": "GOAT",
"endpoint": "goat-search",
"method": "GET",
"path": "/goat/search",
"auth": "apiKey"
}Use cases
Search GOAT sneakers, streetwear, and collectibles with full facet filters, and get product detail with live per-size resale pricing as JSON.
Use GOAT endpoints to turn sneaker and streetwear resale price tracking into repeatable API requests with documented inputs and JSON responses.
Use GOAT endpoints to turn marketplace assortment and drop monitoring into repeatable API requests with documented inputs and JSON responses.
Use GOAT endpoints to turn brand and colorway market research into repeatable API requests with documented inputs and JSON responses.
Managed execution
Every figure below is read from the live GOAT endpoint catalog — 10 endpoints, 42 documented request parameters, and 10 published response schemas — the same catalog Docs and Playground run against.
10 documented GOAT endpoints, grouped into 8 request families — Product, Search and Collection, plus 5 more.
42 request parameters are documented across those GOAT endpoints, 14 of them required — the full input contract is public before you write any integration code.
10 of the 10 GOAT endpoints ship a recorded example response, and 10 carry a documented response schema — you can code against the real JSON before the first request.
GOAT endpoints document their error responses (400, 404, 500 and 503) alongside the success schema, so a block, a rate limit, or a missing record comes back as a typed error rather than silently empty data.
10 hosted MCP tools back the GOAT endpoints, so an agent can call the same routes with the same parameters and the same JSON contract, with no custom glue.
Coverage map
These cards are generated from the active endpoint catalog, so the landing page reflects the same API surface used by Docs and Playground.
/goat/product/{slug}
/goat/search
/goat/collection
/goat/countries
/goat/curated
/goat/listings/count
Endpoint catalog
/goat/searchSearches or browses GOAT's sneaker/streetwear/collectibles catalog by free-text query and/or facet filters (category, footwear sub-type, activity, color, gender, condition, brand, release year, price range, release-date range, silhouette, designer, in-stock/under-retail/instant-ship, curated collection), returning normalized product summaries (brand, silhouette, category, image, stock status, headline pricing across all sizes) plus the total matching count. Query is optional -- a facet filter alone browses the catalog the same way GOAT's own category/brand pages do. Credential-free public data from the same JSON API backing GOAT's own search page.
Response notes
- `total_results` reflects GOAT's matching-result count for the applied query/filters, not just `len(products)`. - `total_results_capped` is `true` when GOAT saturated that count at its ceiling of `10000`. The real number of matches is then higher and unknown — do not present `10000` as an exact total, and do not stop paging there. Deeper pages keep returning distinct products well past the ceiling (page `150` at `limit=100` still returns a full page), so page until a page comes back short or empty rather than until `page * limit` reaches `total_results`. Narrow the query with facet filters if you need an exact count. - `lowest_price`/`instant_lowest_price` are the lowest current price across all sizes/conditions for that product. See `GET /goat/product/{slug}` for a per-size breakdown. - An invalid `categories`, `colors`, `genders`, `conditions`, `product_types`, `activities`, or `sort` value, a malformed `brands`/`years`/`released_after`/`released_before` value, a negative `price_cents_min`/`price_cents_max`, `price_cents_min` greater than `price_cents_max`, or `released_after` later than `released_before` returns `400` before any upstream request is made. - `query` and every facet filter are optional; omitting all of them browses GOAT's full catalog, most-relevant first. Example response: ```json { "code": 200, "msg": "OK", "data": { "query": "jordan 1", "page": 1, "limit": 12, "total_results": 5540, "products": [ { "id": "1469452", "slug": "fragment-design-x-travis-scott-x-air-jordan-1-low-og-sp-sail-military-blue-dm7866-104", "title": "Fragment Design x Travis Scott x Air Jordan 1 Retro Low OG SP 'Sail Military Blue'", "brand_name": "Air Jordan", "silhouette": "Air Jordan 1", "category": "shoes", "product_type": "sneakers", "gender": "men", "image_url": "https://image.goat.com/attachments/product_template_pictures/images/112/426/275/original/1469452_00.png.png", "in_stock": true, "retail_price": {"amount_cents": 15000, "currency": "USD"}, "lowest_price": {"amount_cents": 49100, "currency": "USD"}, "instant_lowest_price": {"amount_cents": 52000, "currency": "USD"}, "release_date": "2025-11-15", "tags": ["3F", "Luxury Gifts", "Gifts for the Streetwear Obsessed"], "source_url": "https://www.goat.com/sneakers/fragment-design-x-travis-scott-x-air-jordan-1-low-og-sp-sail-military-blue-dm7866-104" } ] } } ```
MCP tool goat_search
/goat/search/facetsReturns the accepted values for goat_search's filter parameters: categories, colors, genders, conditions, brands, and years are read live from GOAT's own search API so a value GOAT adds is discoverable without any client-side change, while product_types and activities are served from a maintained list because GOAT exposes no live facet for them. brands is GOAT's top brands ordered by product count, not the complete brand list -- when brands_truncated is true, brands beyond the ones listed exist and remain valid goat_search values. Credential-free public data.
Response notes
- Every live field reflects GOAT's vocabulary at request time -- treat this as the source of truth over any list hardcoded in other documentation, which can drift as GOAT adds values. - `brands` is GOAT's **top** brands, not its complete brand list. Upstream truncates the brand facet, and `brands_truncated` is `true` when that limit was hit. A brand missing from this list is still a valid `brands` value on `GET /goat/search` -- long-tail brands (for example single-product artists under the `art` category) simply never reach the top of the facet. Do not reject a caller-supplied brand for being absent here. - `years` matches a product's **season** year, which is the field `GET /goat/search`'s `years` parameter filters on. It is a superset of the release years GOAT shows elsewhere. - `product_types` and `activities` are maintained in this API rather than read live, so they can lag a GOAT change; every other field cannot. Example response (brand and year lists truncated for brevity): ```json { "code": 200, "msg": "OK", "data": { "categories": ["footwear", "apparel", "accessories", "bags", "collectibles", "jewelry", "home", "media", "sports", "objects", "other", "art"], "colors": ["black", "white", "blue", "grey", "green", "red", "multi-color", "brown", "pink", "cream", "tan", "purple", "yellow", "orange", "silver", "gold", "teal", "copper"], "genders": ["men", "women", "youth", "infant"], "conditions": ["new_no_defects", "used", "new_with_defects", "goat_clean"], "product_types": ["sneakers", "sandals", "cleats", "boots", "slip-ons"], "activities": ["lifestyle", "basketball", "running", "skateboarding"], "brands": ["nike", "adidas", "new-balance", "puma", "supreme", "air-jordan"], "brands_truncated": true, "years": ["2023", "2024", "2022", "2025", "2021", "2020"] } } ```
MCP tool goat_search_facets
/goat/product/{slug}Returns a normalized GOAT product: identity/descriptive metadata (name, brand, SKU, colorway, designer, silhouette, taxonomy, materials, release date, retail price, editorial story, images, full size range, other products featured alongside it), plus live per-size/condition pricing and stock status (lowest price, GOAT Instant Ship price, last sold price, highest current buyer offer). Credential-free public data combining GOAT's own product-page payload with its live pricing and offers APIs.
Response notes
- `sizes` is populated from a separate, live pricing call; it can come back empty if that call fails transiently even though the rest of the product detail loaded successfully -- retry the request if `sizes` is unexpectedly empty for a known in-stock product. - `sizes[].highest_offer` comes from a third, independent upstream call and is not condition-specific (GOAT's offer feature is size-only) -- it can be absent even when `lowest_price` is present, and vice versa. - `featured_in` is not present for every product -- it reflects GOAT's own curated "related release" links on that specific product's page, which not every product has. - An unknown `slug` returns `404`. Example response: ```json { "code": 200, "msg": "OK", "data": { "id": "1469452", "slug": "fragment-design-x-travis-scott-x-air-jordan-1-low-og-sp-sail-military-blue-dm7866-104", "name": "Fragment Design x Travis Scott x Air Jordan 1 Retro Low OG SP 'Sail Military Blue'", "nickname": "Sail Military Blue", "brand_name": "Air Jordan", "silhouette": "Air Jordan 1", "sku": "DM7866 104", "colorway": "Cream", "colorway_detail": "Sail/Military Blue/Sail", "designer": "Peter Moore", "gender": ["men"], "category": "shoes", "product_type": "sneakers", "taxonomy": ["Footwear", "Sneakers", "Basketball", "Lifestyle Basketball"], "upper_material": "Leather", "midsole": "Air", "release_date": "2025-11-15", "retail_price": {"amount_cents": 15000, "currency": "USD"}, "story": "...", "picture_url": "https://image.goat.com/1000/attachments/product_template_pictures/images/112/426/275/original/1469452_00.png.png", "images": [ {"image_url": "https://image.goat.com/attachments/product_template_additional_pictures/images/112/426/279/medium/1469452_01.jpg.jpeg", "aspect": 1.5, "order": 1} ], "size_range": [3, 3.5, 4, 4.5, 5], "size_unit": "us", "sizes": [ { "size": "3.5", "shoe_condition": "new_no_defects", "box_condition": "good_condition", "lowest_price": {"amount_cents": 92500, "currency": "USD"}, "instant_ship_lowest_price": {"amount_cents": 99500, "currency": "USD"}, "last_sold_price": {"amount_cents": 111100, "currency": "USD"}, "highest_offer": {"amount_cents": 20000, "currency": "USD"}, "stock_status": "single_in_stock" } ], "featured_in": [ {"name": "Jordan 3 True Blue 2026", "source_url": "https://www.goat.com/sneakers/air-jordan-3-true-blue-2026-if4396-104"} ], "source_url": "https://www.goat.com/sneakers/fragment-design-x-travis-scott-x-air-jordan-1-low-og-sp-sail-military-blue-dm7866-104" } } ```
MCP tool goat_product
/goat/product/{slug}/recommendedReturns the recommended/related products GOAT's own product page shows for a given product (other colorways, similar products) -- descriptive metadata only, no live pricing. Credential-free public data from GOAT's own product-page recommendation API.
Response notes
- An unknown `slug` returns `404`. - `products` can legitimately be empty for a product GOAT has no recommendations for. Example response: ```json { "code": 200, "msg": "OK", "data": { "slug": "fragment-design-x-travis-scott-x-air-jordan-1-low-og-sp-sail-military-blue-dm7866-104", "products": [ { "id": "585882", "slug": "travis-scott-x-dunk-low-sb-ct5053-101", "name": "Travis Scott x Nike Dunk Low Premium QS SB 'Cactus Jack'", "brand_name": "Nike", "sku": "CT5053 001", "colorway": "Black", "category": "shoes", "product_type": "sneakers", "release_date": "2020-02-29", "retail_price": {"amount_cents": 15000, "currency": "USD"}, "source_url": "https://www.goat.com/sneakers/travis-scott-x-dunk-low-sb-ct5053-101" } ] } } ```
MCP tool goat_product_recommended
/goat/collectionReturns a page of one of GOAT's curated product collections (an editorial rail like "top trending" or "new arrivals"), the same call GOAT's own product-page "you may also like" rails and homepage modules use. Collection slugs are not enumerable by this API -- capture one from a live GOAT page. Credential-free public data.
Response notes
- `total_results` reflects the collection's full item count, not just `len(products)`. - An unknown `slug` returns `404`. Example response: ```json { "code": 200, "msg": "OK", "data": { "slug": "top-trending-uk", "page": 1, "limit": 12, "total_results": 395, "products": [ { "id": "1481726", "slug": "air-jordan-4-retro-rare-air-fv5029-003", "title": "Air Jordan 4 Retro 'Rare Air - White Lettering'", "image_url": "https://image.goat.com/attachments/product_template_pictures/images/110/905/352/original/1481726_00.png.png", "category": "shoes", "release_year": "2025", "source_url": "https://www.goat.com/sneakers/air-jordan-4-retro-rare-air-fv5029-003" } ] } } ```
MCP tool goat_collection
/goat/countriesReturns every country GOAT recognizes -- the accepted values for GET /goat/product/{slug}'s country_code parameter -- with the currency and size unit (us, uk, eu) GOAT localizes to for each, plus whether GOAT ships and accepts returns there. Every country is listed, not only the shippable ones, because country_code localizes pricing and is accepted for all of them; filter on ships_to if you want only GOAT's shipping destinations. Credential-free public data.
Response notes
- **Every country is listed, not only the shippable ones.** `country_code` localizes pricing and is accepted for all of them, so filtering this list to shipping destinations would hide valid inputs. Filter on `ships_to` yourself if you specifically want GOAT's shipping destinations — as of 2026-09-07 that was 170 of 249. - `size_unit` tells you which size system `GET /goat/product/{slug}` returns per-size pricing in for that country. Example response (list truncated for brevity): ```json { "code": 200, "msg": "OK", "data": { "countries": [ { "country_code": "US", "name": "United States", "display_name": "United States", "flag": "🇺🇸", "phone_code": "1", "currency": "USD", "size_unit": "us", "ships_to": true, "returns_from": true, "tax_included": false }, { "country_code": "JP", "name": "Japan", "local_name": "日本", "display_name": "Japan", "flag": "🇯🇵", "phone_code": "81", "currency": "JPY", "size_unit": "us", "ships_to": true, "returns_from": true, "tax_included": true } ], "total": 249, "ships_to_total": 170 } } ```
MCP tool goat_countries
/goat/curatedReturns the shelf of editorially curated links GOAT is currently promoting in its own search box: seasonal collections, specific product searches, and browse-all entry points. Every link is actionable against this API -- a collection link carries a value for GET /goat/collection, a search link carries a query for GET /goat/search. Credential-free public data.
Response notes
- **Every link is actionable against this API.** A `collection` link's `collection_slug` goes to `GET /goat/collection` (or `GET /goat/search`'s `collection_slug`); a `search` link's `query` goes to `GET /goat/search`'s `query`. - `collection_slug` carries GOAT's own identifier, and **not every value resolves.** Readable slugs such as `back-to-school-2026` work on `GET /goat/collection` (verified 2026-09-07: 470 products). GOAT also emits bare numeric internal ids (e.g. `31841`) in the same field, and those return **no results** on `GET /goat/collection` — they are an internal id space that endpoint does not accept. Check whether the value is numeric before following it, and expect an empty collection if you pass one through anyway. - `browse` links are catch-all shelves ("Shop All Items") described by a `filter_key`/`filter_value` pair from GOAT's own merchandising config. They have no direct equivalent parameter on `GET /goat/search`; use an unfiltered search to browse the whole catalog instead. - The shelf is editorial and rotates — it reflects what GOAT is promoting at request time, so treat neither its size nor its contents as stable. Example response (truncated for brevity): ```json { "code": 200, "msg": "OK", "data": { "links": [ { "title": "Back To School", "type": "collection", "collection_slug": "back-to-school-2026" }, { "title": "Awake NY x Air Jordan 6", "type": "search", "query": "Awake NY x Air Jordan 6" }, { "title": "Shop All Items", "type": "browse", "filter_key": "group_id", "filter_value": "all" } ], "total": 10 } } ```
MCP tool goat_curated
/goat/listings/countReturns how many listings GOAT currently has live across its whole marketplace. This is the only way to see GOAT's true catalog size, because GET /goat/search's total_results saturates at 10000 on a broad query and cannot report a total above that ceiling. Credential-free public data.
Response notes
- **This is the only way to see GOAT's true catalog size.** `GET /goat/search`'s `total_results` saturates at `10000` on a broad query (it sets `total_results_capped` when it does), so it cannot report a total above that ceiling. As of 2026-09-07 this endpoint reported 601141 live listings against that same 10000 display cap. - The number is marketplace-wide and cannot be filtered. For a count scoped to a query or facet, use `GET /goat/search` with a narrow enough filter that `total_results_capped` comes back `false`. Example response: ```json { "code": 200, "msg": "OK", "data": { "total_listings": 601141 } } ```
MCP tool goat_listings_count
/goat/searches/trendingReturns the search terms GOAT is currently surfacing as popular, in GOAT's own ranking order -- the same list its own search box shows. Each term is free text ready to pass to GET /goat/search's query parameter. Credential-free public data.
Response notes
- Each term is free text in GOAT's own casing, ready to pass straight to `GET /goat/search`'s `query` parameter. - The list is short (25 terms as of 2026-09-07) and changes over time; GOAT publishes no count or score per term, only the order. Example response: ```json { "code": 200, "msg": "OK", "data": { "searches": ["Jordan 4", "Jordan 1", "Kobe 6", "Jordan 8", "Essentials", "Travis Scott", "Yeezy", "New Balance"], "total": 25 } } ```
MCP tool goat_trending_searches
/goat/suggestReturns GOAT's own search-box autocomplete for a partial query: matching curated collections and matching products. The collections carry the slug values accepted by GET /goat/collection and by GET /goat/search's collection_slug parameter, making this the way to discover collection slugs. Credential-free public data.
Response notes
- **This is how you discover collection slugs.** GOAT publishes no collection index, so `GET /goat/collection`'s `slug` and `GET /goat/search`'s `collection_slug` otherwise have to be copied by hand off a live GOAT page. Autocompleting a brand or model name returns the curated collections GOAT associates with it, slugs included. - A query that matches nothing returns `200` with empty `collections` and `products` arrays, not `404` — no matches is a normal autocomplete answer. - `limit` bounds collections only. There is no upstream control over the number of products. Example response (truncated for brevity): ```json { "code": 200, "msg": "OK", "data": { "query": "jord", "collections": [ { "id": "2fbf8b62-8899-4323-89ab-efdbc672d9d0", "title": "Michael Jordan", "slug": "michael-jordan", "type": "StaticCollection" }, { "id": "13079529-6136-4ece-8d8d-9c7469356d71", "title": "Jordan Grape Shoes", "slug": "color-grape", "type": "StaticCollection" } ], "products": [ { "id": "1403298", "title": "Air Jordan 5 Retro OG 'Black Metallic Reimagined'", "slug": "air-jordan-5-og-metallic-2025-hf3975-001", "image_url": "https://image.goat.com/attachments/product_template_pictures/images/106/958/856/original/1403298_00.png.png", "category": "shoes", "source_url": "https://www.goat.com/sneakers/air-jordan-5-og-metallic-2025-hf3975-001" } ] } } ```
MCP tool goat_suggest
Related APIs
Marketplaces & Retail
Collect marketplace product signals from Amazon without building brittle storefront scrapers.
Marketplaces & Retail
Build resale, pricing, and marketplace workflows from structured eBay data.
Marketplaces & Retail
Turn public Shop.app product and merchant pages into structured JSON for e-commerce product intelligence, price research, shop monitoring, and marketplace discovery workflows.
How to scrape GOAT
Crawlora's GOAT endpoints return normalized public GOAT data as JSON with one API key — no GOAT account required. Search and product detail split cleanly: search carries headline pricing across all sizes, while product detail is the only place the full per-size, per-condition price ladder lives.
The search endpoint takes a free-text query — a model name, colorway, or style code — and/or facet filters. Omit the query entirely to browse by facets alone, the way GOAT's own brand and category pages do. Filters cover category, colour, gender, condition, brand slug, release year, a cents-denominated price range, in-stock only, under-retail only, and Instant Ship availability, and the response carries the total matching count alongside normalized product summaries.
Pass a product slug from a search result to the product endpoint for the full record: name, brand, SKU, colorway, designer, silhouette, taxonomy, materials, release date, retail price, editorial story, images, and the complete size range — plus the live commercial layer, which is per size and condition: lowest price, GOAT Instant Ship price, last sold price, and highest current buyer offer.
The search-facets endpoint returns GOAT's current closed-set values for the category, colour, gender and condition filters, read live from GOAT's own search API. Treat it as the source of truth over any list written down elsewhere — GOAT adds values over time, and this is how a new one becomes discoverable without a client-side change.
The recommended endpoint returns the related products GOAT's own product page surfaces for a given product — other colorways and similar silhouettes. It is descriptive metadata only and carries no live pricing, so resolve anything you want to price through the product endpoint.
The collection endpoint returns a page of one of GOAT's editorial rails, such as top trending or new arrivals — the same call GOAT's own homepage modules and product-page you-may-also-like rails make. It is the discovery path when you want what GOAT is currently promoting rather than what a query matches.
FAQ
Search or facet-browse the catalog, then pass a product slug to the product endpoint for full metadata plus live per-size resale pricing, and use the recommended and collection endpoints for the related-product graph and GOAT's own curated rails — all return structured JSON with one API key.
Yes, on the product endpoint: it combines GOAT's product-page payload with its live pricing and offers APIs, so each size and condition carries the lowest price, the GOAT Instant Ship price, the last sold price, and the highest current buyer offer. Search results carry headline pricing across all sizes, not the per-size ladder.
Yes — the query is optional. Supply facet filters alone (brand slugs, categories, colours, genders, conditions, release years, or a cents-denominated price range) and search behaves like GOAT's own brand and category pages. Brand slugs are lowercase-hyphenated and are passed through rather than validated against a fixed list, since GOAT's brand catalog changes over time.
Set the under-retail filter on the search endpoint, which restricts results to products currently trading below their original retail price. It combines with every other facet, so you can narrow to one brand, colourway, or size-availability state at the same time, and pair it with the Instant Ship filter for stock that is already pre-verified.
Call the search-facets endpoint. It returns GOAT's live closed-set vocabulary for the category, colour, gender and condition filters straight from GOAT's own search API, so a value GOAT adds later shows up without any client-side change. Prefer it over any list written down elsewhere, including in documentation, since those drift. Brand slugs are the exception — that catalog is large and open-ended, so brands are passed through rather than validated.
No — the recommended endpoint returns descriptive metadata only, matching what GOAT's own product-page rails carry. To price any of those products, take its slug and call the product endpoint, which is where the live per-size and per-condition pricing lives.