Looking for the overview — what this API returns, what it costs, and a call you can run without a key? See the Zara API page →
E-commerce & Marketplaces

Zara API & Scraper

Zara API returns live Zara data as clean JSON for zara The primary endpoint, search, returns matching records including product id, product group id, name, brand and brand id.

3 actionsLive JSON1,000 free credits$0.67–$1.50 / 1,000 creditsMCP-ready
Get a free keyOpen in playground

🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.

Developers reach for it when they need to track product listings, prices, availability, variants and reviews without maintaining one-off scraping code or separate API contracts. If you were about to build or fix a Zara scraper, this API is the maintained alternative — it returns the same data as clean JSON, with the proxies, rotation and anti-bot handling already solved. This page covers the live example, request shape, response shape and available actions: search, product_detail, price. Every request uses the same ReefAPI envelope, one API key and one shared credit pool, so it fits alongside the rest of your data stack.

Reference

Zara price minor units by market, and what exponent 0 means

Zara returns money as an integer plus an exponent, so reading price.raw on its own is how you end up off by a factor of a hundred, and the exponent is not the same in every market. The same product also has a different assortment and a different in-stock size count per store. Every row below is product 545456737, a pinstripe blazer, fetched once per market on 2026-08-27.

marketCurrencyprice.raw / exponentprice.amountsizes_in_stock of 5
usUSD21900 / -2219.004
deEUR13900 / -2139.005
gbGBP13900 / -2139.003
trTRY799000 / -27990.005
inINR1295000 / -212950.001
jpJPY25990 / 0259904
krKRW259900 / 02599004

The market enum holds 19 codes: us, ca, mx, br, gb, ie, es, pt, fr, it, de, nl, pl, tr, ae, in, jp, kr, au. The default is us. price.amount is already the divided figure, so use it unless you need the integer. sku_count stayed at 5 in every market above while sizes_in_stock moved between 1 and 5, which means stock is per store even though the SKU list is not.

Live example

Real request and response JSON

Captured from the indexed primary action, search, on .

Captured request
{
  "method": "POST",
  "url": "https://api.reefapi.com/zara/v1/search",
  "headers": {
    "x-api-key": "$REEF_KEY",
    "content-type": "application/json"
  },
  "body": {
    "query": "dress",
    "max_results": 20
  }
}
Captured response
{
  "ok": true,
  "meta": {
    "api": "zara",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": 1380.2,
    "record_count": 20,
    "bytes": 82151,
    "cache_hit": false,
    "completeness_pct": 100,
    "stop_reason": "limit_reached",
    "market": "us",
    "query": "dress",
    "match_type": "EXACT",
    "pagination": {
      "page": 1,
      "page_size": 20,
      "total_results": 831,
      "returned": 20,
      "has_more": true,
      "next_page": 2
    },
    "charged_credits": 1,
    "version": "1.0.0"
  },
  "data": {
    "query": "dress",
    "market": {
      "code": "us",
      "store_id": "11719",
      "locale": "en_US",
      "currency": "USD",
      "url_base": "https://www.zara.com/us/en"
    },
    "match": {
      "type": "EXACT",
      "provider": "Attraqt",
      "universe": "WOMAN"
    },
    "results": [
      {
        "product_id": "552893657",
        "product_group_id": "552885420",
        "name": "100% LEATHER MIDI DRESS",
        "url": "https://www.zara.com/us/en/100-leather-midi-dress-p03046309.html?v1=552893657",
        "brand": "zara",
        "brand_id": 1,
        "reference": "C03046309620000-I2026",
        "display_reference": "3046/309",
        "price": {
          "amount": 179,
          "currency": "USD",
          "raw": 17900,
          "exponent": -2,
          "was": null,
          "discount_pct": null,
          "discount_label": null,
          "on_sale": false,
          "unavailable": null
        },
        "availability": "coming_soon",
        "in_stock": false,
        "section": 1,
        "section_name": "WOMAN",
        "family_name": "DRESS",
        "subfamily_name": "B.DRESS",
        "kind": "Wear",
        "type": "Product",
        "color": {
          "product_id": "552893657",
          "color_id": "620",
          "name": "Pink",
          "hex": "#9A5454",
          "reference": "C03046309620000-I2026",
          "availability": "coming_soon"
        },
        "available_colors": [
          {
            "name": "[trimmed-depth]",
            "hex": "[trimmed-depth]"
          }
        ],
        "additional_color_count": 0,
        "main_color_hex": "#9A5454",
        "tags": null,
        "image": "https://static.zara.net/assets/public/f8db/f569/3c6e4193bbb7/54db8ec968a7/03046309620-p/03046309620-p.jpg?ts=1789479719664&w=2048",
        "images": [
          {
            "url": "[trimmed-depth]",
            "kind": "[trimmed-depth]",
            "name": "[trimmed-depth]",
            "width": "[trimmed-depth]",
            "height": "[trimmed-depth]",
            "order": "[trimmed-depth]"
          }
        ],
        "image_count": 1,
        "seo": {
          "keyword": "100-leather-midi-dress",
          "seo_product_id": "03046309",
          "discern_product_id": "552893657"
        },
        "position": 1
      },
      {
        "product_id": "590621958",
        "product_group_id": "549296705",
        "name": "PLAID A-LINE DRESS",
        "url": "https://www.zara.com/us/en/plaid-a-line-dress-p06096811.html?v1=590621958",
        "brand": "zara",
        "brand_id": 1,
        "reference": "C06096811080101-I2026",
        "display_reference": "6096/811",
        "price": {
          "amount": 45.9,
          "currency": "USD",
          "raw": 4590,
          "exponent": -2,
          "was": null,
          "discount_pct": null,
          "discount_label": null,
          "on_sale": false,
          "unavailable": null
        },
        "availability": "in_stock",
        "in_stock": true,
        "section": 3,
        "section_name": "KID",
        "family_name": "DRESS",
        "subfamily_name": "GRL DRESS",
        "kind": "Wear",
        "type": "Product",
        "color": {
          "product_id": "590621958",
          "color_id": "080",
          "name": "Ecru / Blue",
          "hex": "#aaa7a0",
          "reference": "C06096811080101-I2026",
          "availability": "in_stock"
        },
        "available_colors": [
          {
            "name": "[trimmed-depth]",
            "hex": "[trimmed-depth]"
          }
        ],
        "additional_color_count": 0,
        "main_color_hex": "#aaa7a0",
        "tags": null,
        "image": "https://static.zara.net/assets/public/ae04/4415/1cc24528bbc1/09891fe18d52/06096811080-f1/06096811080-f1.jpg?ts=1788429202043&w=2048",
        "images": [
          {
            "url": "[trimmed-depth]",
            "kind": "[trimmed-depth]",
            "name": "[trimmed-depth]",
            "width": "[trimmed-depth]",
            "height": "[trimmed-depth]",
            "order": "[trimmed-depth]"
          }
        ],
        "image_count": 1,
        "seo": {
          "keyword": "plaid-a-line-dress",
          "seo_product_id": "06096811",
          "discern_product_id": "590621958"
        },
        "position": 2
      },
      {
        "product_id": "595370971",
        "product_group_id": "550767475",
        "name": "CHECKERED KNIT-DETAIL DRESS",
        "url": "https://www.zara.com/us/en/checked-dress-with-knit-detail-p05536684.html?v1=595370971",
        "brand": "zara",
        "brand_id": 1,
        "reference": "C05536684700020-I2026",
        "display_reference": "5536/684",
        "price": {
          "amount": 45.9,
          "currency": "USD",
          "raw": 4590,
          "exponent": -2,
          "was": null,
          "discount_pct": null,
          "discount_label": null,
          "on_sale": false,
          "unavailable": null
        },
        "availability": "in_stock",
        "in_stock": true,
        "section": 3,
        "section_name": "KID",
        "family_name": "BABY DRESS",
        "subfamily_name": "KDA KNITWEAR",
        "kind": "Wear",
        "type": "Product",
        "color": {
          "product_id": "595370971",
          "color_id": "700",
          "name": "Brown",
          "hex": "#675655",
          "reference": "C05536684700020-I2026",
          "availability": "in_stock"
        },
        "available_colors": [
          {
            "name": "[trimmed-depth]",
            "hex": "[trimmed-depth]"
          }
        ],
        "additional_color_count": 0,
        "main_color_hex": "#675655",
        "tags": [
          {
            "type": "[trimmed-depth]",
            "label": "[trimmed-depth]"
          }
        ],
        "image": "https://static.zara.net/assets/public/e438/527c/bf2442d4bdf0/c89fb5b07d15/05536684700-f1/05536684700-f1.jpg?ts=1785831180838&w=2048",
        "images": [
          {
            "url": "[trimmed-depth]",
            "kind": "[trimmed-depth]",
            "name": "[trimmed-depth]",
            "width": "[trimmed-depth]",
            "height": "[trimmed-depth]",
            "order": "[trimmed-depth]"
          }
        ],
        "image_count": 1,
        "seo": {
          "keyword": "checked-dress-with-knit-detail",
          "seo_product_id": "05536684",
          "discern_product_id": "595370971"
        },
        "position": 3
      }
    ],
    "filters_available": {
      "color": [
        {
          "value": "beige",
          "label": "Beige",
          "count": 113,
          "filter": "color_facet:beige"
        },
        {
          "value": "black",
          "label": "Black",
          "count": 164,
          "filter": "color_facet:black"
        },
        {
          "value": "blue",
          "label": "Blue",
          "count": 101,
          "filter": "color_facet:blue"
        }
      ],
      "price_range": [
        {
          "value": "2154",
          "label": "2154",
          "count": null,
          "filter": "priceFilter:"
        },
        {
          "value": "3000",
          "label": "3000",
          "count": null,
          "filter": "priceFilter:"
        },
        {
          "value": "4000",
          "label": "4000",
          "count": null,
          "filter": "priceFilter:"
        }
      ],
      "rootCategories": [
        {
          "value": "catalog01_woman",
          "label": "Woman",
          "count": 529,
          "filter": "rootCategories_facet:catalog01_woman"
        },
        {
          "value": "catalog01_kid",
          "label": "Kid",
          "count": 117,
          "filter": "rootCategories_facet:catalog01_kid"
        },
        {
          "value": "catalog01_massimoduttiwoman",
          "label": "MD Woman",
          "count": 107,
          "filter": "rootCategories_facet:catalog01_massimoduttiwoman"
        }
      ]
    },
    "sort_available": [
      {
        "value": "price_asc",
        "label": "Cheapest first"
      },
      {
        "value": "price_desc",
        "label": "Most expensive first"
      }
    ]
  }
}
Actions

What the Zara API does

ActionDescriptionConcrete use caseKey params
searchSearch the Zara catalogue and get back the products on sale right now — each with Zara's own product id, name, price (with the was-price and discount percentage when it is reduced), currency, availability, colourway with hex code, the other colours it comes in, the product images at full resolution, the department and product family, and the link to the page. Choose the country store with `market` (that is what sets the currency), narrow with section, colour, category or brand, sort by price, and page through the results. Every filter value the query actually supports comes back in `filters_available` with counts, so you never have to guess one.Pricing teams call search to search the Zara catalogue and get back the products on sale right now.query, market, section, group_section, size, ...
product_detailGet one Zara product in full, by its product id or its zara.com URL — the name and the full description, the price with its currency and any discount, the product reference as printed on the label, EVERY colourway it is made in and, inside each one, EVERY size with Zara's own SKU number, that size's own price and whether it is in stock right now. Also the complete image gallery at full resolution, the fibre composition broken down per garment part, care instructions, country of origin and traceability, safety warnings, certified and sustainable material claims, physical measurements where Zara publishes them, the size system, the department and product family, and the date the product first went on sale. Choose the country store with `market` — id, price, currency and stock are all per-market.Marketplace operators call product_detail to get one Zara product in full, by its product id or its zara.com URL.product_id, url, market, include_composition, find_market
priceCheap refresh of ONE Zara product's current price and stock, by product id or zara.com URL: the price with its currency (and the was-price and discount when it is reduced), the colour's availability word and an `in_stock` boolean. One light upstream request instead of the three a full product_detail makes, so use this for daily price/stock monitoring and product_detail only when you need sizes, images or composition. Same ids and the same `market` knob as product_detail.Catalog enrichment teams call price to get cheap refresh of ONE Zara product's current price and stock, by product id or zara.com URL.product_id, url, market
Code samples

Call search from your stack

curl -X POST https://api.reefapi.com/zara/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"query":"dress","max_results":20}'
MCP one-liner
Ask your MCP-connected assistant: call reefapi.zara.search with {"query":"dress","max_results":20}.
Use cases

Who uses this API and why

  • Pricing teams use Zara to search the Zara catalogue and get back the products on sale right now.
  • Marketplace operators use Zara to get one Zara product in full, by its product id or its zara.com URL.
  • Catalog enrichment teams use Zara to get cheap refresh of ONE Zara product's current price and stock, by product id or zara.com URL.
FAQ

Questions developers ask before integrating

Does the Zara API return prices in cents?

It returns both forms. price.raw is the integer Zara publishes, price.exponent says where the decimal point goes, and price.amount is the already-divided number. For product 545456737 on the us market that was raw 21900, exponent -2 and amount 219.0. Read amount unless you specifically need the integer, and never assume raw divided by 100.

Is the Zara price exponent always -2?

No, and that is the trap. Currencies without minor units come back with exponent 0: the same blazer on jp returned raw 25990 exponent 0 for JPY 25,990 and on kr raw 259900 exponent 0 for KRW 259,900. Dividing those by 100 would understate the price a hundredfold. us, de, gb, tr and in all returned -2 in the same measurement.

What does the market parameter change?

The catalogue, the assortment, the price and the currency, and nothing else. The same blazer was USD 219.00 on us, EUR 139.00 on de, GBP 139.00 on gb, TRY 7,990.00 on tr and INR 12,950.00 on in. It does not depend on where the request comes from, so the same market always returns the same currency. Nineteen codes are accepted and the default is us.

Is a Zara product_id the garment or the colour?

The colour. Zara ids are colour-level, so 545456737 is one colourway and product_group_id (545451465) is the garment it belongs to. Passing the group id also resolves. Inside product_detail, colors[] holds every colourway with its own color_id and hex, and colors[].sizes[] holds every size with its own sku, so one call gives you the whole matrix rather than one variant.

What size-level detail comes back, and what are the stock values?

Every size row carries sku, size_id, name, availability, in_stock and its own reference. On the us market that blazer returned SKUs 545451466 through 545451470 for XS, S, M, L and XL, with XL at availability "coming_soon" and in_stock false while the other four were "in_stock". Across a 60-row search the availability values seen were in_stock and low_on_stock, so treat it as a small vocabulary and read in_stock when you only need the boolean.

What are reference and display_reference?

reference is the full code printed on the label, built from the product code, the colour code and the season: "C00550156407000-I2026" for that blazer, whose color_id is 407. display_reference is the short form Zara shows on the page, "0550/156". Each size then has its own reference with the size appended, such as "0055015640701-I2026" for XS. Use reference when matching against Zara's own paperwork rather than the numeric id.

Why does a Zara search return Zara Home or Massimo Dutti products?

Because the search index behind a Zara store is the Inditex index for that store, so sister brands can match a query. A 60-row search for 'dress' on the us market returned 59 zara rows and 1 zarahome row. Every row carries brand and brand_id, and the brand parameter (zara, zarahome, massimodutti) trims rows after they are fetched, so a filtered page can come back shorter than max_results.

How do I know Zara actually matched my words?

Read match.type. "EXACT" means the words matched the catalogue, and Zara also reports spell-corrected and semantic-fallback matches instead of returning nothing, which is how a query quietly turns into merely similar products. match.universe names the department Zara routed the query to and it can disagree with the rows: a search for 'dress' came back with universe KID while the 60 rows split 36 KID, 21 WOMAN, 2 MAN and 1 HOME.

What is the Zara API?

Zara API is a ReefAPI endpoint group for zara It returns live JSON through POST requests under /zara/v1.

Is the Zara API free to try?

Yes. ReefAPI starts with 1,000 free credits, no card required. Zara calls use the same shared credit balance as every other ReefAPI engine.

Do I need a Zara login or account?

No login to Zara is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.

How fresh is the Zara data?

The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.

How many credits does the Zara API use?

Zara actions currently cost 1 credit per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.

Can I call Zara from an AI assistant or MCP client?

Yes. Connect ReefAPI once through MCP and your assistant can call zara actions with the same key, credit pool and JSON envelope used by normal REST requests.

docs / zara

Zara

Zara

base /zara/v13 endpoints
post/zara/v1/product_detail1 credit

Get one Zara product in full, by its product id or its zara.com URL — the name and the full description, the price with its currency and any discount, the product reference as printed on the label, EVERY colourway it is made in and, inside each one, EVERY size with Zara's own SKU number, that size's own price and whether it is in stock right now. Also the complete image gallery at full resolution, the fibre composition broken down per garment part, care instructions, country of origin and traceability, safety warnings, certified and sustainable material claims, physical measurements where Zara publishes them, the size system, the department and product family, and the date the product first went on sale. Choose the country store with `market` — id, price, currency and stock are all per-market.

ParameterAllowed / rangeDescription
product_idoptional—Zara's own product id — exactly the `product_id` a search row returns, and the `v1=` value in a zara.com product URL. A digits-only string (9 digits today); it is never a number to be arithmetic on and never has leading zeros stripped. Zara's ids are colour-level: one id is one colourway of a garment. Passing the `product_group_id` instead also works and returns the same group. Provide `product_id` OR `url`.
urloptional—A zara.com product URL, as an alternative to `product_id`. The id is read from the `v1=` parameter, which every link Zara itself publishes carries. A URL without `v1=` cannot be resolved — Zara publishes no lookup from the short `-p<number>` code to a product — and is rejected with that explanation rather than guessed at.
market = usoptionalus · ca · mx · br · gb · ie · es · pt · fr · it · de · nl · pl · tr · ae · in · jp · kr · auWhich Zara country store to read. This decides the catalogue, the assortment, the prices AND the currency — the same product is USD 35.90 in `us`, EUR 22.95 in `de` and GBP 22.99 in `gb`. Prices do NOT depend on where the request comes from, only on this value, so the same market always returns the same currency.
include_composition = trueoptional—Include the composition-and-care detail: fibre percentages per garment part, washing/care instructions, country of origin and traceability, safety warnings, certified and sustainable material claims, and (on bags, shoes, candles and similar) physical measurements. Costs one extra upstream request that runs alongside the main one; set false for the fastest possible response.
find_market = falseoptional—When the product is not in the market you asked for, look for it in the largest Zara stores and name the ones that have it (`meta.available_in`). Zara's catalogue is per-country, so an id that is missing in one store is very often live in another. Off by default because it costs one extra lookup per store searched; the request has already failed either way and is not charged.
Try in playground →
post/zara/v1/price1 credit

Cheap refresh of ONE Zara product's current price and stock, by product id or zara.com URL: the price with its currency (and the was-price and discount when it is reduced), the colour's availability word and an `in_stock` boolean. One light upstream request instead of the three a full product_detail makes, so use this for daily price/stock monitoring and product_detail only when you need sizes, images or composition. Same ids and the same `market` knob as product_detail.

ParameterAllowed / rangeDescription
product_idoptional—Zara's own product id — exactly the `product_id` a search row returns, and the `v1=` value in a zara.com product URL. A digits-only string (9 digits today); it is never a number to be arithmetic on and never has leading zeros stripped. Zara's ids are colour-level: one id is one colourway of a garment. Passing the `product_group_id` instead also works and returns the same group. Provide `product_id` OR `url`.
urloptional—A zara.com product URL, as an alternative to `product_id`. The id is read from the `v1=` parameter, which every link Zara itself publishes carries. A URL without `v1=` cannot be resolved — Zara publishes no lookup from the short `-p<number>` code to a product — and is rejected with that explanation rather than guessed at.
market = usoptionalus · ca · mx · br · gb · ie · es · pt · fr · it · de · nl · pl · tr · ae · in · jp · kr · auWhich Zara country store to read. This decides the catalogue, the assortment, the prices AND the currency — the same product is USD 35.90 in `us`, EUR 22.95 in `de` and GBP 22.99 in `gb`. Prices do NOT depend on where the request comes from, only on this value, so the same market always returns the same currency.
Try in playground →
Built for volume
5M+ requests a day

Measured at 60 requests a second across the fleet, with no central bottleneck. Volume pricing is on request, and per-key limits are raised for high-volume accounts.

Missing a source?
We build it

Tell us a site we do not cover yet and it becomes an engine. A customer asked for bestprice.gr on a Sunday and it was in the catalog the next day.

Support
2 minute median reply

Median time from a question in the live chat to the first answer, measured across every answered conversation. Setup help included, no support tier to buy.

One key, one balance
Every API included

No per-site plans and no separate subscriptions. One key and one credit pool across the whole catalog, so adding a source costs nothing up front.

Planning something large? Tell us the volume and the sources and we will come back with what it costs and what we would have to build.