GOAT API endpoint
Returns 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.
/goat/countriesNo parameters.
Response fields:
countries[].country_code — ISO 3166-1 alpha-2 code, the value to pass
as country_codecountries[].name — English namecountries[].local_name — name in the country's own languagecountries[].display_name — name as GOAT displays itcountries[].flag — flag emojicountries[].phone_code — international dialing codecountries[].currency — ISO 4217 currency GOAT prices in for this
countrycountries[].size_unit — size system GOAT shows: us, uk, eucountries[].ships_to — whether GOAT ships orders herecountries[].returns_from — whether GOAT accepts returns from herecountries[].tax_included — whether displayed prices include taxtotal — number of countries returnedships_to_total — how many of them GOAT ships toNotable response behavior:
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):
{
"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
}
}
| Field | Filled in, of 249 checked | Values in the sample |
|---|---|---|
| country_code | 249 | |
| name | 249 | “Afghanistan” and 248 other values |
| local_name | 249 | “افغانستان” and 248 other values |
| display_name | 249 | |
| flag | 249 | “🇦🇫” and 248 other values |
| phone_code | 249 | |
| currency | 249 | “USD” and 13 other values |
| size_unit | 249 | us (227), eu (18), uk (4) |
| ships_to | 249 | true in 170 of 249 |
| returns_from | 249 | true in 170 of 249 |
| tax_included | 249 | true in 0 of 249 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/goat/countries" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"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
}
}Request schema
No body schema
Response schema
#/definitions/goat.countriesResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | goat.CountriesResponse | No | ||||
| data.countries | array | No | ||||
| data.countries[].country_code | string | No | US | |||
| data.countries[].currency | string | No | USD | |||
| data.countries[].display_name | string | No | United States | |||
| data.countries[].flag | string | No | 🇺🇸 | |||
| data.countries[].local_name | string | No | United States | |||
| data.countries[].name | string | No | United States | |||
| data.countries[].phone_code | string | No | 1 | |||
| data.countries[].returns_from | boolean | No | true | |||
| data.countries[].ships_to | boolean | No | true | ShipsTo reports whether GOAT ships orders to this country. It does not gate country_code, which is accepted for every country here. | ||
| data.countries[].size_unit | string | No | us | SizeUnit is the size system GOAT shows for this country: us, uk, eu. | ||
| data.countries[].tax_included | boolean | No | false | |||
| data.ships_to_total | integer | No | 170 | ShipsToTotal counts the subset GOAT ships to. | ||
| data.total | integer | No | 249 | |||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 500 | Internal Server Error | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/goat/countries" \
-H "x-api-key: $CRAWLORA_API_KEY"