Dafiti API

Latin American fashion as JSON, size by size

The Dafiti API turns Latin America's largest fashion marketplace into clean JSON in four actions.

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

4 active endpoints, on 1 and 3 credit tiers.

  • POST/dafiti/v1/search
  • POST/dafiti/v1/category
  • POST/dafiti/v1/product
  • POST/dafiti/v1/availability

What Dafiti endpoints does ReefAPI ship?

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

4 endpoints

search

3 cr

Search Dafiti's fashion catalogue by keyword.

required
query
optional
country, page, sort, brand, color, size, seller, price_min, price_max, free_shipping, limit

category

3 cr

Browse a Dafiti category page (e.g.

required
category_path
optional
country, page, sort, brand, color, size, seller, price_min, price_max, free_shipping, limit

product

3 cr

One product in full.

required
sku
optional
country

availability

1 cr

SIZE-LEVEL STOCK for up to 10 products in ONE call, from the storefront's own 3.7 KB JSON.

required
skus
optional
country

Every parameter, every allowed value →

Dafiti API

4 of 4 endpoints, ready to run

View docs ↗

Size-level stock for up to 10 products in ONE call: per size, the variant code, whether it is buyable, how many units remain when Dafiti publishes that, and who ships it. Brazil only — the Colombian storefront does not publish stock.

1 credit1 required · 0 optional
POST/dafiti/v1/availability
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 Dafiti API works

Dafiti 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 /dafiti/v1/…

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

03
Pay
1 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.

Watch a style sell out size by size, without a call per product

Clothing does not sell out all at once - it sells out in the middle sizes first, and a single in-stock flag hides that completely. Three calls give you the size curve for a whole brand and keep it fresh for one credit a sweep.

01search
POST/dafiti/v1/search
{"query": "tenis", "country": "br", "brand": "Nike"}

857 products for Nike out of 34,678 unfiltered. Each row has sku, title, colour, both prices, the list price and the discount. Store the sku once; availability and product both take it.

02availability
POST/dafiti/v1/availability
{"skus": ["KO992SHF67UFS", "AD464SCF97UDM", "..."]}

Up to 10 skus in ONE call. Per size you get the variant code, in_stock, and stock_qty when Dafiti publishes an exact figure (0-10) or stock_at_least: 11 when it does not. Track sizes_in_stock against sizes_total to see a style thinning out.

03product
POST/dafiti/v1/product
{"sku": "KO992SHF67UFS", "country": "br"}

Only when you need the rest: the rating and review count, the attribute table, the images and the other colourways with their own prices. Re-run availability daily and product rarely.

A size curve per style instead of a single in-stock flag: for each of Nike's 857 products you hold every size with its own variant code, whether it is buyable, and an exact remaining count wherever Dafiti publishes one. Ten products refresh in one call, so a 500 style watchlist is 50 calls a sweep rather than 500, and you see size 40 go before the style itself ever reads as sold out.

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

What each storefront publishes

Dafiti's Brazilian and Colombian storefronts are not the same site in two languages, and they do not publish the same fields. This is the measured difference, so you can decide before you build.

FieldBrazil (br)Colombia (co)
CurrencyBRLCOP
Size-level availabilityYes - every size with its own variant code and buyable flagNot published anywhere
Units remaining per sizeYes, up to 11; above that stock_at_least: 11Not published
Cash price vs card priceBoth, in separate fieldsOne price
List price and discountYes, when the item is discountedYes, on 184 of 189 rows
Colour on search rows100% of rowsNot published (0 of 189)
Seller on search rowssold_by_dafiti on every rowNot published (0 of 189)
Result total and last pageYes - 34,678 results, 723 pages for tenisNeither; page until a page is empty
Rating and review countYes, on productNot published
availability actionYes, up to 10 products per callRefused, and says why

Argentina and Chile are not options. Measured 2026-09-23: dafiti.com.ar now serves a fashion blog with no catalogue and dafiti.cl a farewell page announcing the store's closure, so country=ar and country=cl are rejected with that reason rather than returning an empty or irrelevant result.

Measured coverage, 2026-09-23

Every figure below was measured against the live storefronts on 2026-09-23, including the limits that count against us. Prices and size lists were checked against each product page's own published values, not against our own output.

Storefronts live

2 of 4. Brazil (BRL) and Colombia (COP) still trade. Argentina now serves a fashion blog with no catalogue and Chile a page announcing the store's closure, so country=ar and country=cl are rejected with that reason instead of returning an empty result.

Stock ceiling

Dafiti never publishes a quantity above 11, so 11 means 'eleven or more'. Measured across 478 size-variants on 59 products: every value is 0 to 11 and 250 of them sit exactly at 11. The API returns stock_qty only for a real 0 to 10 figure and stock_at_least: 11 otherwise, rather than a made-up number.

Catalogue size

34,678 products for a single Brazilian keyword (tenis), across 723 pages.

Rows per page

About 58 in Brazil, 48 in Colombia.

Price accuracy

Checked against the product page's own machine-readable values on 20 products: selling price 20 of 20, card price 14 of 14, list price 14 of 14.

Size accuracy

Size names and which sizes are buyable matched the product page on 14 of 14 products.

Field fill, Brazil

sku, title, brand, colour, url, image and both prices on 100% of rows across four categories (586 rows). List price and discount only where the item is actually discounted.

Field fill, Colombia

sku, title, brand, url, image and price on 189 of 189 rows; list price and discount on 184 of 189. Colour and seller are not published there at all.

Filters

Every offered filter narrows the source's own total; combining brand, colour and size takes 34,678 down to 104.

Not available

Review texts, seller ratings and ids, price history, and any size or stock data for Colombia.

What people build with Dafiti

The jobs this data is most often used for.

4

endpoints

1/3

credits per call

01

Fashion price trackers store the cash price and the card price as separate series, so a card number never overwrites the headline price a shopper actually sees.

02

Brands check size availability per colourway with availability, ten SKUs at a time, and see which sizes have sold out rather than whether the style is merely in stock.

03

Marketplace sellers reprice against Dafiti and read sold_by_dafiti to tell Dafiti's own stock from a third party's before matching a price.

04

Discount monitors watch list_price_brl against price_pix_brl to catch a real markdown, and ignore rows where the struck-through price equals the selling price.

What Dafiti data costs

The cheapest call here is 1 credit, so $15/mo (Pro) buys 10,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/dafiti/v1/availability \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"skus":["KO992SHF67UFS"]}'
python
import requests

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

Have a question? We got answers.

The questions people actually ask before wiring up Dafiti.

Get a free key →
Does this really return stock per size, or just whether the product is in stock?

Per size. A shoe listed in 12 sizes comes back as 12 rows, each with its own variant code (for example KO992SHF67UFS-53 for size 35), an in_stock flag, the delivery type and the seller who ships it. sizes_in_stock and sizes_total sit next to the list, so on the sample product 5 of 7 sizes were buyable. The size names and which sizes were buyable were checked against the product page itself on 14 products and matched on 14 of 14. This is Brazil only; the Colombian storefront does not publish size names or stock at all, and says so instead of guessing.

Why is stock_qty sometimes null when the size is in stock?

Because Dafiti stops counting at 11. Measured across 478 size-variants on 59 products, every quantity it publishes is between 0 and 11 and 250 of them are exactly 11, so 11 means 'eleven or more', not eleven. When that happens you get stock_qty: null, stock_at_least: 11 and stock_capped: true; when Dafiti really does publish an exact figure, 0 through 10, it is in stock_qty. For the same reason stock_total is null whenever any size is capped and stock_total_at_least carries the lower bound - summing a ceiling would invent a number Dafiti never published.

Why are there two prices on every Brazilian product?

Because Brazilian shops quote two. price_pix_brl is the cash price the storefront headlines, price_card_brl is what the same item costs on a card, and wherever the cash discount applies the card price is exactly 10 percent higher - 144.43 against 129.99 on the sample product. list_price_brl holds the struck-through original (199.99) and discount_pct is computed from the prices, with the site's own badge kept separately in discount_pct_source so you can see if they ever disagree. Where a product has no cash discount the two prices are equal. All three were verified against the product page's own machine-readable values on 20 products with no mismatches.

Do the filters and sorts really apply?

Yes, and only the ones Dafiti applies are offered. Measured on tenis on 2026-09-23: 34,678 results unfiltered, 857 for Nike, 9,763 for the colour Preto, 14,135 in size 40, 4,615 sold by Dafiti itself, 9,783 with free shipping, 6,743 between 100 and 200 BRL, and combining Nike with Preto gives 219 and adding size 40 gives 104. Five sorts are offered - relevance, price_asc, price_desc, discount and newest - and each returns a different first row and a different price ladder. Dafiti also accepts a popularity order and then ignores it, returning the identical 20 products in the identical positions as the default, so that one is deliberately not offered here. Every search response also carries a facets block listing the brands, colours, sizes and sellers this particular query accepts, spelled the way the filter wants them, so you never have to guess.

What happens if my keyword matches nothing?

You get an empty result with no_match: true, not a page of unrelated products. This matters because Dafiti answers a keyword that matches nothing with a normal-looking page of 48 products it picked for you, and reports a result total for them. A search for a nonsense string returns zero rows here, and a real search is never mistaken for one.

Which countries can I query?

Brazil (br, BRL) and Colombia (co, COP). Those are the two storefronts that still trade. Dafiti is often listed as a four-country marketplace, but as of 2026-09-23 dafiti.com.ar serves a fashion blog with no catalogue and dafiti.cl serves a page announcing the Chilean store's closure, so country=ar and country=cl are rejected with that explanation. The two live storefronts publish different fields and the difference is documented in the table above rather than hidden behind an average.

Does the API tell me when Dafiti is not the seller?

Yes. Every Brazilian row carries sold_by_dafiti as a boolean, and product and availability return the seller Dafiti's own page credits for the item, such as adidas or Olympikus. Where an item is listed by an individual trader rather than a company, that person's registered personal name is withheld - Dafiti does not show it on the product page either - and you still get sold_by_dafiti: false so you know it is not first-party stock.

What does Dafiti NOT publish?

No review texts, only an average and a count, and only in Brazil. No seller ratings and no seller ids. No price or stock history. No size-level stock, no size names, no colour and no seller on search rows in Colombia, and no result total or last page there either. Sponsored placements are not hidden: they are returned as normal rows flagged sponsored, 13 of 58 on one tenis search, so you can drop them yourself if a ranking study needs to.

What is the Dafiti API?

Dafiti API is a ReefAPI endpoint group for latin america's biggest fashion marketplace: size-by-size availability, brand, colour, the discount against the list price and the marketplace seller. It returns live JSON through POST requests under /dafiti/v1.

Is the Dafiti API free to try?

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

Do I need a Dafiti login or account?

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

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

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

Yes. Connect ReefAPI once through MCP and your assistant can call dafiti 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 Dafiti, 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.