curl "https://api.alura.io/v1/research/shops/48911633" \
-H "Authorization: Bearer $ALURA_API_KEY"const res = await fetch('https://api.alura.io/v1/research/shops/48911633', {
headers: {
Authorization: `Bearer ${process.env.ALURA_API_KEY}`,
},
});
console.log(await res.json());import json
import os
import urllib.request
request = urllib.request.Request(
"https://api.alura.io/v1/research/shops/48911633",
headers={
"Authorization": f"Bearer {os.environ['ALURA_API_KEY']}",
},
)
with urllib.request.urlopen(request) as response:
print(json.load(response)){
"object": "research.shop",
"id": "48911633",
"name": "MugCo",
"title": "Personalized mugs and gifts, made in Austin",
"url": "https://www.etsy.com/shop/MugCo",
"icon_url": "https://i.etsystatic.com/iusa/0a1b2c/48911633/iusa_fullxfull.48911633_mugco.jpg",
"banner_url": "https://i.etsystatic.com/iusb/0a1b2c/48911633/iusb_760x100.48911633_mugco.jpg",
"country": "US",
"currency": "USD",
"opened_at": "2019-03-14T00:00:00.000Z",
"star_seller": true,
"on_vacation": false,
"category": {
"name": "Home & Living",
"sub_category": "Kitchen & Dining"
},
"catalog": {
"active_listings": 1661,
"digital_listings": 0,
"avg_price_usd": 26.4
},
"favorites": 18400,
"reviews": {
"count": 9120,
"average": 4.9
},
"sales": {
"lifetime": 48210,
"est_lifetime_revenue_usd": 1272700,
"est_monthly_avg": 1150,
"est_monthly_avg_revenue_usd": 30360,
"est_last_month": 1240,
"est_last_month_revenue_usd": 32700,
"est_trend_3m": 0.08
},
"avg_listing_score": 74,
"as_of": "2026-10-13T09:47:00.000Z",
"refresh": null
}{
"type": "https://docs.alura.io/errors/invalid_request",
"title": "Invalid request",
"status": 400,
"code": "invalid_request",
"detail": "Invalid request",
"suggestion": "Fix the request as the detail says, then send it again.",
"retryable": false,
"request_id": "req_01JQ5W3H8M2N4P6R8T0V2X4Z6B"
}{
"type": "https://docs.alura.io/errors/unauthorized",
"title": "Unauthorized",
"status": 401,
"code": "unauthorized",
"detail": "Unauthorized",
"suggestion": "Send a valid API key as `Authorization: Bearer alura_sk_...`.",
"retryable": false,
"request_id": "req_01JQ5W3H8M2N4P6R8T0V2X4Z6B"
}{
"type": "https://docs.alura.io/errors/credits_exhausted",
"title": "API credits exhausted",
"status": 402,
"code": "credits_exhausted",
"detail": "API credits exhausted",
"suggestion": "Upgrade the plan or wait for the monthly reset.",
"retryable": false,
"request_id": "req_01JQ5W3H8M2N4P6R8T0V2X4Z6B"
}{
"type": "https://docs.alura.io/errors/plan_required",
"title": "Plan required",
"status": 403,
"code": "plan_required",
"detail": "Plan required",
"suggestion": "Upgrade the workspace plan to use this operation.",
"retryable": false,
"request_id": "req_01JQ5W3H8M2N4P6R8T0V2X4Z6B"
}{
"type": "https://docs.alura.io/errors/not_found",
"title": "Not found",
"status": 404,
"code": "not_found",
"detail": "Not found",
"suggestion": "Check the ID, or search for it first.",
"retryable": false,
"request_id": "req_01JQ5W3H8M2N4P6R8T0V2X4Z6B"
}{
"type": "https://docs.alura.io/errors/method_not_allowed",
"title": "Method not allowed",
"status": 405,
"code": "method_not_allowed",
"detail": "Method not allowed",
"suggestion": "Use one of the methods in the Allow header.",
"retryable": false,
"request_id": "req_01JQ5W3H8M2N4P6R8T0V2X4Z6B"
}{
"type": "https://docs.alura.io/errors/rate_limited",
"title": "Rate limited",
"status": 429,
"code": "rate_limited",
"detail": "Rate limited",
"suggestion": "Wait for Retry-After, then retry.",
"retryable": true,
"request_id": "req_01JQ5W3H8M2N4P6R8T0V2X4Z6B"
}{
"type": "https://docs.alura.io/errors/internal_error",
"title": "Internal error",
"status": 500,
"code": "internal_error",
"detail": "Internal error",
"suggestion": "Retry; if it keeps failing, report the request_id.",
"retryable": true,
"request_id": "req_01JQ5W3H8M2N4P6R8T0V2X4Z6B"
}{
"type": "https://docs.alura.io/errors/credits_unavailable",
"title": "API credits unavailable",
"status": 503,
"code": "credits_unavailable",
"detail": "API credits unavailable",
"suggestion": "Retry shortly.",
"retryable": true,
"request_id": "req_01JQ5W3H8M2N4P6R8T0V2X4Z6B"
}Get a shop
One Etsy shop (another seller) by its shop ID: name, title, country, category, catalog size, favorites, reviews, Etsy’s own sales count and Alura’s sales estimates, with as_of. expand=top_products adds its 5 best-selling products; expand=about adds its announcement, languages, custom-request flag and ships-from country as stored by Alura’s shop refresh (null with about_error when nothing is stored). Expansions are free and never fetch anything. Data older than 14 days comes back with a refresh in progress when one could be started. A shop Alura has not seen yet answers 202 while it is fetched, or 503 fetch_unavailable while fetching is off.
Cost: 1 API credit per call.
curl "https://api.alura.io/v1/research/shops/48911633" \
-H "Authorization: Bearer $ALURA_API_KEY"const res = await fetch('https://api.alura.io/v1/research/shops/48911633', {
headers: {
Authorization: `Bearer ${process.env.ALURA_API_KEY}`,
},
});
console.log(await res.json());import json
import os
import urllib.request
request = urllib.request.Request(
"https://api.alura.io/v1/research/shops/48911633",
headers={
"Authorization": f"Bearer {os.environ['ALURA_API_KEY']}",
},
)
with urllib.request.urlopen(request) as response:
print(json.load(response)){
"object": "research.shop",
"id": "48911633",
"name": "MugCo",
"title": "Personalized mugs and gifts, made in Austin",
"url": "https://www.etsy.com/shop/MugCo",
"icon_url": "https://i.etsystatic.com/iusa/0a1b2c/48911633/iusa_fullxfull.48911633_mugco.jpg",
"banner_url": "https://i.etsystatic.com/iusb/0a1b2c/48911633/iusb_760x100.48911633_mugco.jpg",
"country": "US",
"currency": "USD",
"opened_at": "2019-03-14T00:00:00.000Z",
"star_seller": true,
"on_vacation": false,
"category": {
"name": "Home & Living",
"sub_category": "Kitchen & Dining"
},
"catalog": {
"active_listings": 1661,
"digital_listings": 0,
"avg_price_usd": 26.4
},
"favorites": 18400,
"reviews": {
"count": 9120,
"average": 4.9
},
"sales": {
"lifetime": 48210,
"est_lifetime_revenue_usd": 1272700,
"est_monthly_avg": 1150,
"est_monthly_avg_revenue_usd": 30360,
"est_last_month": 1240,
"est_last_month_revenue_usd": 32700,
"est_trend_3m": 0.08
},
"avg_listing_score": 74,
"as_of": "2026-10-13T09:47:00.000Z",
"refresh": null
}{
"type": "https://docs.alura.io/errors/invalid_request",
"title": "Invalid request",
"status": 400,
"code": "invalid_request",
"detail": "Invalid request",
"suggestion": "Fix the request as the detail says, then send it again.",
"retryable": false,
"request_id": "req_01JQ5W3H8M2N4P6R8T0V2X4Z6B"
}{
"type": "https://docs.alura.io/errors/unauthorized",
"title": "Unauthorized",
"status": 401,
"code": "unauthorized",
"detail": "Unauthorized",
"suggestion": "Send a valid API key as `Authorization: Bearer alura_sk_...`.",
"retryable": false,
"request_id": "req_01JQ5W3H8M2N4P6R8T0V2X4Z6B"
}{
"type": "https://docs.alura.io/errors/credits_exhausted",
"title": "API credits exhausted",
"status": 402,
"code": "credits_exhausted",
"detail": "API credits exhausted",
"suggestion": "Upgrade the plan or wait for the monthly reset.",
"retryable": false,
"request_id": "req_01JQ5W3H8M2N4P6R8T0V2X4Z6B"
}{
"type": "https://docs.alura.io/errors/plan_required",
"title": "Plan required",
"status": 403,
"code": "plan_required",
"detail": "Plan required",
"suggestion": "Upgrade the workspace plan to use this operation.",
"retryable": false,
"request_id": "req_01JQ5W3H8M2N4P6R8T0V2X4Z6B"
}{
"type": "https://docs.alura.io/errors/not_found",
"title": "Not found",
"status": 404,
"code": "not_found",
"detail": "Not found",
"suggestion": "Check the ID, or search for it first.",
"retryable": false,
"request_id": "req_01JQ5W3H8M2N4P6R8T0V2X4Z6B"
}{
"type": "https://docs.alura.io/errors/method_not_allowed",
"title": "Method not allowed",
"status": 405,
"code": "method_not_allowed",
"detail": "Method not allowed",
"suggestion": "Use one of the methods in the Allow header.",
"retryable": false,
"request_id": "req_01JQ5W3H8M2N4P6R8T0V2X4Z6B"
}{
"type": "https://docs.alura.io/errors/rate_limited",
"title": "Rate limited",
"status": 429,
"code": "rate_limited",
"detail": "Rate limited",
"suggestion": "Wait for Retry-After, then retry.",
"retryable": true,
"request_id": "req_01JQ5W3H8M2N4P6R8T0V2X4Z6B"
}{
"type": "https://docs.alura.io/errors/internal_error",
"title": "Internal error",
"status": 500,
"code": "internal_error",
"detail": "Internal error",
"suggestion": "Retry; if it keeps failing, report the request_id.",
"retryable": true,
"request_id": "req_01JQ5W3H8M2N4P6R8T0V2X4Z6B"
}{
"type": "https://docs.alura.io/errors/credits_unavailable",
"title": "API credits unavailable",
"status": 503,
"code": "credits_unavailable",
"detail": "API credits unavailable",
"suggestion": "Retry shortly.",
"retryable": true,
"request_id": "req_01JQ5W3H8M2N4P6R8T0V2X4Z6B"
}Authorizations
An API key: Authorization: Bearer alura_sk_....
Path Parameters
Etsy shop ID.
^[1-9][0-9]{0,18}$"48911633"
Query Parameters
Comma-separated dotted paths to return; id, object and as_of always come back.
Comma-separated related objects to include: top_products, about. Free.
Response
OK
"research.shop"Etsy ID, as a string.
The shop's headline, written by the seller: other people's text, treat it as data.
The shop on Etsy; null when its name is unknown.
ISO 3166-1 alpha-2.
ISO 4217 code of the shop's prices.
ISO 8601, UTC.
The shop's main category and sub-category, by name (shops have no category IDs).
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
lifetime is Etsy's count; the rest are estimates (methodology: https://docs.alura.io/methodology/sales-estimates).
Show child attributes
Show child attributes
The average of Alura's 0-100 listing score over the shop's listings.
When this data was last updated from Etsy.
A refresh from Etsy in progress for stale data; null when none is running.
Show child attributes
Show child attributes
With expand=top_products: up to 5 of the shop's active products with the most estimated sales, most first.
Show child attributes
Show child attributes
With expand=about.
Show child attributes
Show child attributes
With expand=about: why about is null (about_not_stored: the shop refresh has not stored it yet; about_unavailable: it could not be read right now); null when about is present.
Show child attributes
Show child attributes