Daraz API

South Asia's biggest marketplace, as four catalogues in four currencies

The Daraz API turns Daraz, the largest online marketplace in Pakistan and Bangladesh, into clean JSON in five actions across four separate storefronts: Pakistan in PKR, Bangladesh in BDT, Sri Lanka in LKR and Nepal in NPR.

no credit card1,000 free credits · instant API key · pay by card or crypto
Missing a Daraz endpoint, or need a source we don't have yet?Contact us real people · same-day reply.
D
/daraz/v1

5 active endpoints, on 2 and 3 credit tiers.

  • POST/daraz/v1/search
  • POST/daraz/v1/category
  • POST/daraz/v1/browse
  • POST/daraz/v1/product
  • POST/daraz/v1/product/reviews

What Daraz endpoints does ReefAPI ship?

5 live read endpoints. Read-only data API: no writes, no account actions, no dashboard access on the target site.

5 endpoints

search

2 cr

Search one Daraz storefront and get the product grid.

required
query
optional
country, page, price_min, price_max, min_rating, location, sort, include_facets

category

2 cr

Walk one Daraz category or tag page by page, with the same product rows and the same filters…

required
category
optional
country, query, page, price_min, price_max, min_rating, location, sort, include_facets

browse

2 cr

Documented alias of category.

required
category
optional
country, query, page, price_min, price_max, min_rating, location, sort, include_facets

product

3 cr

The full record for one product.

required
item_id
optional
country, sku_id

product/reviews

2 cr

The published customer reviews for one product.

required
item_id
optional
country, page, limit, stars, sort

Every parameter, every allowed value →

Daraz API

3 of 5 endpoints, ready to run

View docs ↗

The product grid with the price actually charged, the strikethrough price, the real discount, rating and review count, units sold, the seller's id and name, the shipping region and the brand — in the currency of whichever storefront you ask for.

2 credits1 required · 8 optional
POST/daraz/v1/search
idle
// Press "Try it" and this pane shows exactly what the
// live site returned this second — including an empty
// result, if that is the truth. No key, no account.

How the Daraz API works

Daraz is a normal ReefAPI surface — the same four rules that hold for every other engine on the key.

01
Authenticate
x-api-key header

No OAuth app, no request signing, no per-site account. One key covers all 280 engines.

02
Call
POST /daraz/v1/…

Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.

03
Pay
2 or 3 credits per call

Credits, not seats. Failed and blocked calls are never charged, and cache hits cost nothing.

04
Read
{ ok, data, meta, error }

One envelope everywhere. meta carries latency_ms, record_count and the endpoint that answered.

The product page does not publish the price a shopper pays

Daraz's product page carries exactly one price string, and it is the struck-through one. We checked 18 products across six categories: on all 12 where the two prices differ, that string was the pre-discount figure and never the charged one — on a discounted laptop it read 76,999 against the 15,400 a buyer actually pays. A feed built on the product page alone is silently wrong, and nothing in the response says so. The product action resolves the charged price for you and tags where it came from.

01search
POST/daraz/v1/search
{"country": "pk", "query": "rice cooker"}

Forty rows, each with price_pkr and list_price_pkr as separate numbers. Carry item_id and sku_id forward.

02product
POST/daraz/v1/product
{"country": "pk", "item_id": "<from above>", "sku_id": "<from above>"}

The full record, with price_source telling you which of Daraz's own documents each number came from. Six ids round-tripped from search matched on price six out of six.

03reviews
POST/daraz/v1/product/reviews
{"country": "pk", "item_id": "<the same id>"}

Reviews plus the 1-5 histogram and hidden_review_count, so you can see how many Daraz withholds from the public list.

The price a shopper is actually charged, the strikethrough beside it, and a discount computed from both — rather than the pre-campaign number the page prints.

request
curl -X POST https://api.reefapi.com/daraz/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{}'
response envelope
{
  "ok": true,
  "data": { … },
  "meta": {
    "api": "daraz",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": …,
    "record_count": …
  },
  "error": null
}

Which number is the price, and why the country is part of the question

Daraz prints two prices on a product and the API keeps them in separate, currency-named fields. Measured on 2026-09-23 on the Pakistan storefront, against the figures Daraz publishes for the same items.

Daraz product (PK)price_pkrlist_price_pkrdiscount_percent
Apple iPhone 17 Pro Max 512GB54299961279911
DELL Chromebook 128GB154007699980
Rice cooker (Mobiles & Kitchen)59591200050
Lawn suit, unstitched1449249942
Men's sports shoes899199955
Blender / juicer4199499916

price_pkr is what a shopper is charged and list_price_pkr is Daraz's strikethrough price; list_price is null when there is no discount rather than repeating the selling price, so a zero-percent discount is never invented. The field is named after the currency in every country - price_pkr, price_bdt, price_lkr, price_npr - because Pakistan, Sri Lanka and Nepal all print prices as Rs. while meaning three different currencies, and merging them into one price column would be a silent error. discount_percent is worked out from the two prices and discount_percent_source is Daraz's own figure, published beside it so a disagreement is visible rather than absorbed. On a small share of rows Daraz rounds its own printed price to the whole unit - 9 rows in 320 measured across the four countries, for example a numeric 592.89 printed as Rs. 593 - and the API returns the precise number while keeping Daraz's string verbatim in price_display.

Four countries, four currencies, and the four things that will surprise a sync

Measured on 2026-09-23 against the live marketplace: 26 engine calls, every action at 100 per cent, 18 product pages across six categories, 320 rows compared against the figures Daraz prints, and 20 filter measurements taken against an unfiltered baseline in the same minutes. Four of these go against us.

Four storefronts, and they are genuinely different catalogues

Pakistan in PKR, Bangladesh in BDT, Sri Lanka in LKR, Nepal in NPR. On the same query the first five product ids are entirely disjoint across all four, prices differ by magnitudes that are not a currency conversion, and the match counts differ too — a search for shoes returns 1,881 in Bangladesh while the other three reach Daraz's display ceiling. The country is a real parameter, not a language switch.

Against us: the product page publishes only the strikethrough price

Its structured offer block carries no price at all, and the single price string on the page was the pre-discount figure on 12 of the 12 products where the two differ — never the charged one. Worst case measured, a laptop listed at 15,400 whose page prints 76,999, five times too high. So the product action reads the charged price, the rating, the review count, the units sold and the seller name from Daraz's own catalogue entry for that item and tags them price_source catalogue. If no live entry exists, the price fields come back null with price_source unavailable rather than a guess.

Against us: three storefronts print Rs. for three different currencies

Pakistan, Sri Lanka and Nepal all show prices as Rs., meaning Pakistani, Sri Lankan and Nepalese rupees, and Daraz publishes no currency code anywhere in its data. A plain price field would let you add three currencies into one column without noticing. So the field is named for the currency — price_pkr, price_bdt, price_lkr, price_npr — and the currency is always stated on the response.

Against us: past the last page, Daraz keeps answering with products that are not results

A query with 3,164 matches really ends at page 80. Pages 90, 100, 200, 1,000, 5,000 and even 100,000 each returned a full 40-row page with a success status, no repetition, and products unrelated to the query — toys and phone cases on a trainer search. Nothing in the response marks them. We drop those rows, return an empty page, and say so in page_note. Use last_page and no_more_pages rather than dividing the total yourself.

Against us: two filters change the rows but not the count

A minimum rating and a ships-from region both genuinely filter — the rating filter removed every row below four stars where the unfiltered page had two, and the region filter returned 40 of 40 rows from Punjab against an unfiltered split of 15 Punjab and 25 Sindh — but Daraz does not recalculate its reported total for either. On those two the rows are authoritative and the total is not. A price band does correct the total: 4,080 matches down to 311, with all 40 rows inside the band.

Filters we do not offer, because the source ignores them

Daraz advertises brand, seller and service filters, accepts them and then serves the unfiltered set — 37 of 40 rows were the wrong brand, and 40 of 40 the wrong seller. A filter that silently does nothing is worse than none, so they are not exposed. Brand and seller are still returned on every row, so you can filter client-side. A category does narrow properly: the query phone goes from 4,080 to 2,108 inside smartphones.

Where the count is real and where it is a ceiling

Daraz reports an exact figure up to 4,080 and truncates its own number there. A search for Samsung Galaxy S23 Ultra 512GB returns 4 matches and exactly 4 rows; Nike Air Force 1 returns 3,164 and ends at page 80, which is 3,164 over 40. total_results_capped tells you which of the two you are holding.

Search matches title words and does not translate

Two or three words work. A fully-specified product name returns nothing at all, with a success status and no error: Samsung Galaxy S23 Ultra 512GB finds 4 products, while iPhone 15 Pro Max 256GB Natural Titanium finds zero. An empty result here is a query problem, not a failure.

Ratings and sold counts are sparse in Nepal

On Pakistan and Sri Lanka, rating arrives on roughly 30 to 34 rows in 40 and units sold on 21 to 33. On Nepal it is far thinner — one 40-row laptop search carried rating on 2 rows and units sold on 1. If you are building on those fields, choose the country with that in mind. Daraz states no rating scale anywhere, so rating_scale is null rather than assumed to be out of five.

Reviews: 1,000 deep, and the histogram does not add up on purpose

Up to 50 a page and 1,000 deep per product, with aggregates covering the whole product however deep you page. The star filter agrees with Daraz's own histogram exactly — filtering to one star returned 727 where the histogram says 727, and to five stars 6,300 where it says 6,300. The buckets sum to 8,308 against a stated total of 8,362 because Daraz withholds some reviews from the public list; that count comes back as hidden_review_count rather than being quietly reconciled.

Myanmar is not covered, and that is the domain's doing

Daraz's Myanmar storefront, daraz.com.mm, no longer serves a working site as of 23 September 2026 — the domain answers nothing, while the other four answered normally in the same minutes. Asking for it returns MARKET_UNAVAILABLE saying so, rather than a block error that would suggest retrying.

What Daraz does not publish at all

No real stock quantity — the per-item quantity field is a per-order cap, returned as max_order_quantity while stock_quantity stays null. No seller rating or storefront page, no questions-and-answers feed, no counts beside its own filter values, and no newest or best-selling sort: it offers exactly three orders. Every one of these is absent or null rather than guessed.

What people build with Daraz

The jobs this data is most often used for.

5

endpoints

2/3

credits per call

01

Track competitor pricing across Pakistan, Bangladesh, Sri Lanka and Nepal in one pipeline, with the charged price and the strikethrough price in separate currency-named fields so a discount is never confused with a price cut.

02

Monitor a brand's presence on South Asia's largest marketplace: which sellers list it, at what price, in which shipping regions, and how the four national catalogues diverge.

03

Build a price-comparison or deal-alert product for Pakistani and Bangladeshi shoppers, using the real discount computed from both prices rather than the marketing badge.

04

Pull customer reviews with the full 1-5 star histogram and verified-purchase flags for product research, sentiment analysis or review-summarisation, with the withheld-review count exposed so the sample is honest.

What Daraz data costs

The cheapest call here is 2 credits, so $15/mo (Pro) buys 5,000 of them — $1.50 per 1,000 credits. Credits roll over and never expire, and failed or blocked calls are not charged.

Full pricing →
$0.67–$1.50 / 1,000 credits
  • 1,000 free credits on signup, no card
  • One key, all 280 APIs, one credit pool
  • Failed and blocked calls are never charged
  • Credits roll over and never expire

Call it in two lines

Sign up, get 1,000 credits and one key that works on every engine. Then this is the whole protocol.

curl
curl -X POST https://api.reefapi.com/daraz/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{}'
python
import requests

r = requests.post(
    "https://api.reefapi.com/daraz/v1/search",
    headers={"x-api-key": REEF_KEY},
    json={},
)
print(r.json()["data"])
FAQ

Have a question? We got answers.

The questions people actually ask before wiring up Daraz.

Get a free key →
Which countries does this cover, and are they really different?

Four storefronts: Pakistan in PKR, Bangladesh in BDT, Sri Lanka in LKR and Nepal in NPR. They are genuinely separate catalogues rather than one catalogue in four skins. On the same query the first five product ids are entirely disjoint across all four, prices differ by magnitudes that are not a currency conversion of one shared number, and the match counts differ too - a search for shoes returns 1,881 matches in Bangladesh while Pakistan, Sri Lanka and Nepal all reach Daraz's display ceiling. Daraz's Myanmar storefront, daraz.com.mm, is not offered: as of 23 September 2026 the domain no longer serves a working site at all, and asking for it returns a clear MARKET_UNAVAILABLE rather than a confusing error.

Why does the price field have the currency in its name?

Because three of the four storefronts print the same symbol for three different currencies. Pakistan, Sri Lanka and Nepal all show prices as Rs., meaning Pakistani, Sri Lankan and Nepalese rupees, which are not the same unit of money, and Daraz publishes no currency code anywhere in its data. If the API returned a plain price field, a caller pulling two countries into one table would silently be adding together three different currencies. So the field is price_pkr, price_bdt, price_lkr or price_npr, the currency is always stated in the response, and the mistake becomes impossible to make by accident.

How many results can I get for one query?

Forty products a page. Daraz reports an exact match count up to 4,080 and truncates its own figure there, so the response tells you which case you are in: total_results carries Daraz's number, total_results_capped says whether that number is the real count or the ceiling, and last_page plus no_more_pages give you the real end. A search for Samsung Galaxy S23 Ultra 512GB returns 4 matches and exactly 4 rows; a search for Nike Air Force 1 returns 3,164 and ends at page 80, which is 3,164 divided by 40. Asking for a page beyond the end returns an empty page with an explanation in page_note rather than filler, because past its real last page Daraz keeps answering with forty unrelated products and nothing in its response says they are not results.

Which filters actually work?

Only the ones measured to change the result, and the page documents what each one does to the count. A price band cuts the query phone from 4,080 matches to 311 with all 40 returned rows inside the band, and a category narrows the same query to 2,108. A minimum rating and a shipping region genuinely change the rows - the rating filter removed every row below four stars where the unfiltered page had two, and the region filter returned 40 of 40 rows from Punjab against an unfiltered split of 15 Punjab and 25 Sindh - but Daraz does not recalculate its reported total for either, so on those two the rows are authoritative and the total is not, and the API says so in the parameter description rather than letting you find out. Brand, seller and service filters are deliberately not offered: Daraz advertises them, accepts them and then ignores them, and a filter that silently does nothing is worse than no filter. Brand and seller are still returned on every row, so you can filter on them yourself.

Can I sort by price and then page through the results?

You can sort by price, on page one. Cheapest-first and dearest-first both work and were checked row by row: 39 of 39 adjacent pairs came back correctly ordered in each direction. But Daraz returns the identical forty rows on page one, page two and page ten of a price-sorted query, so paging a price sort would hand you the same products over and over while looking like progress. Asking for a page beyond the first together with a price sort returns INVALID_PARAM explaining exactly that. To walk a catalogue by price, drop the sort and step through price bands instead.

What is in a product record that is not in a search row?

The full description as clean text and as the original HTML, every gallery image and video, the colour and size variant axes with each value's own image, the SKU table with per-order limits, the category path, the brand link, availability and the return policy. Across 18 products in six categories, title, description, brand, images, category path and currency were present on all 18, and the variant axes on 16 - the two without them are genuinely single-variant items. The product record also carries the charged price, rating, review count, units sold and seller name, which Daraz does not put on its product page at all; the API resolves them for you in the same call and tags them with price_source so you always know which of Daraz's own documents a number came from.

How complete are ratings and sold counts?

It depends on the country, and the honest answer is published rather than averaged away. On Pakistan and Sri Lanka, rating arrives on roughly 30 to 34 rows in 40 and units sold on 21 to 33. On Nepal it is far sparser - on one 40-row laptop search, rating arrived on 2 rows and units sold on 1 - because the Nepali catalogue carries much less review activity. If you are building on rating or sold count, choose the country with that in mind. Daraz states no rating scale anywhere, so rating_scale is returned as null rather than being assumed to be out of five, and any field Daraz does not publish comes back null rather than as a guess.

How far do reviews go, and does the star filter agree with the histogram?

Up to 50 reviews a page and 1,000 deep per product, and the aggregate figures cover the whole product however deep you page. The star filter and Daraz's own histogram agree exactly: filtering to one star returned 727 where the histogram says 727, and to five stars 6,300 where it says 6,300. One thing worth knowing is that the histogram does not add up to the stated total, and that is Daraz's own arithmetic rather than a rounding error on our side - on one product the five star buckets sum to 8,308 against a stated 8,362, because Daraz withholds some reviews from the public list. The count it withholds is returned as hidden_review_count so you can see the gap instead of discovering it as a bug.

What is the Daraz API?

Daraz API is a ReefAPI endpoint group for south asia's biggest marketplace across pakistan, bangladesh, sri lanka and nepal: four catalogues, four currencies, with the charged price and the strikethrough kept apart. It returns live JSON through POST requests under /daraz/v1.

Is the Daraz API free to try?

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

Do I need a Daraz login or account?

No login to Daraz 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 Daraz 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 Daraz API use?

Daraz actions currently cost 2-3 credits per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.

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

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

116 E-commerce & Marketplaces APIs on the same key

One key, one credit pool, one response envelope. If you are pulling Daraz, you are one call away from the rest of the category — no second contract, no second integration.

Need something this API does not do?

Name the endpoint, the field, or a source we do not carry yet. We ship new APIs every week and you would be first to get the key. Real people read every message and reply the same day.

0/4000

No account needed · we reply from [email protected]

Try it on your own data before you pay anything

The call above is the real endpoint, not a recording. A free key gives you 1,000 credits, the other 279 APIs, and the same envelope everywhere.

Endpoints, parameters and credit costs on this page are read from the live catalog and cannot drift from what the API accepts. Field notes were captured on 2026-09-23.