Enjoei API

Brazil's second-hand market as JSON — including what things actually sold for

The Enjoei API returns Brazil's largest second-hand marketplace as clean JSON in eight actions: search, product/detail, product/similar, seller/listings, seller/sold, seller/profile, filters and suggest.

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

8 active endpoints, on 0, 1 and 2 credit tiers.

  • POST/enjoei/v1/search
  • POST/enjoei/v1/product/detail
  • POST/enjoei/v1/product/similar
  • POST/enjoei/v1/seller/listings
  • POST/enjoei/v1/seller/sold
  • POST/enjoei/v1/seller/profile
  • POST/enjoei/v1/filters
  • +1 more

What Enjoei endpoints does ReefAPI ship?

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

8 endpoints

search

1 cr

Search Enjoei's live second-hand catalogue by keyword, brand, department, size, price, condit…

required
optional
query, department, subcategory, brand, price_min, price_max, condition, size_clothes, size_shoes, size_waist, sort, shipping_range, city, state, published_within, discount_min, discount_max, store_kind, per_page, cursor, max_rotations

product/detail

2 cr

One listing in full.

required
listing
optional
max_rotations

product/similar

2 cr

Listings comparable to a given one.

required
listing
optional
per_page, sort, condition, max_rotations

seller/listings

2 cr

Everything a shop currently has for sale, with the same row shape as search and the same filters.

required
optional
seller, seller_id, query, brand, subcategory, price_min, price_max, condition, sort, per_page, cursor, max_rotations

seller/sold

1 cr

A shop's completed sales.

required
seller
optional
page, max_rotations

seller/profile

1 cr

A shop's public page.

required
seller
optional
max_rotations

filters

1 cr

The brand and sub-category facets Enjoei itself offers for a query, each with its live listin…

required
optional
query, department, subcategory, brand, price_min, price_max, condition, size_clothes, size_shoes, size_waist, sort, shipping_range, city, state, published_within, discount_min, discount_max, store_kind, max_rotations

suggest

0 cr

Enjoei's own search typeahead.

required
term
optional
max_rotations

Every parameter, every allowed value →

Enjoei API

2 of 8 endpoints, ready to run

View docs ↗

Enjoei listings by Portuguese keyword, brand, department or sub-category: listing id and URL, title, asking price in BRL, the struck price when reduced, condition, size, brand and the seller's shop — filtered by price, condition, size, discount and recency.

1 credit0 required · 5 optional
POST/enjoei/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 Enjoei API works

Enjoei 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 /enjoei/v1/…

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

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

Price a second-hand item for the Brazilian market in three calls

Asking prices tell you what sellers hope for; sold prices tell you what buyers paid. Enjoei publishes both, and this is the order to read them in.

01search
POST/enjoei/v1/search
{"query": "tenis nike shox", "condition": "used", "sort": "price_asc", "per_page": 30}

The live asking market, cheapest first. Each row carries the asking price and, when the seller has reduced it, the struck price and the discount.

02detail
POST/enjoei/v1/product/detail
{"listing": "<listing_id from step 1>"}

The number to actually quote: detail reads Enjoei's live price rather than the search index copy, and adds the description, weight, photos and the offer band the seller will consider.

03sold
POST/enjoei/v1/seller/sold
{"seller": "<seller.username from step 1>"}

What that shop's comparable items really sold for — price is the asking price, sold_price is what was paid.

The live asking range, a price you can stand behind, and real completed sales to anchor it — three calls, no Enjoei account.

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

What a live call returns — 400 rows across eight categories, counted not assumed

Fifty search rows were taken from each of eight categories on 2026-09-23 (sportswear, electronics, womenswear, bags, toys, books, footwear, watches) and every field counted. Two of these lines go against us; they are the ones worth reading.

FieldFilled (of 400)Why it is not always filled
listing id, URL, title, price, currency, discount percentage400
condition (used or new), brand, department, category400
photo, free shipping, shipping type400
seller handle, display name, shop URL, avatar400
sub-category347shallow on books (7 of 50); department and category are still complete there
struck-through price and promotion tag215only on a reduced listing — 54% of rows, steady across all eight categories
size and size variants155a clothing field: ~100% on womenswear and footwear, 47 of 50 on sportswear, and 0-4% on bags, watches, electronics and toys, which have no size on Enjoei
like count, view count, listing date, sold date, colour, seller rating0Enjoei does not publish any of them on a listing — see the coverage table

Speed and size, 2026-09-23, 86 consecutive live calls, all returning data: search 40 calls, median 877 ms, about 36 KB for 30 rows; product/detail 10 calls, median 1.9 s, about 4 KB; seller/profile 27 calls, median 1.7 s, about 1 KB; seller/listings 2 calls, median 2.2 s; seller/sold 3 calls, median 1.5 s, 40 rows; product/similar median 1.7 s; filters 2 calls, median 779 ms; suggest median 943 ms.

What Enjoei publishes, what it does not, and where the ceilings are

Measured on 2026-09-23 across 86 live calls, 400 search rows in eight categories, 14 listings compared with their own pages and 25 shop pages. Five of these lines go against us.

Catalogue

All of enjoei.com.br: fashion, footwear, bags, beauty, electronics, home, toys, books and collectables, second-hand and unused, priced in BRL.

Prices

price is the asking price. original_price is the seller's struck-through price and is returned only when it is genuinely higher — 215 of 400 rows. product/detail reads Enjoei's live price: it matched the item's own page on 14 of 14 listings, while the search-index copy differed on 5 of those 14, once by a third.

Sold prices

Per shop only, 40 rows a page, with both the asking price and the real sale price. There is no marketplace-wide sold search, and Enjoei publishes no sale date.

Not published

No listing date, no sold date, no like count, no view count, no colour and no per-listing seller rating — Enjoei does not show any of them to a logged-out visitor, so none are returned or estimated. Use the published_within filter for recency.

Result ceilings

Fifty rows per page, by cursor; a larger page size is ignored by Enjoei, so it is capped rather than promised. total_results stops at 10,000 and total_results_capped flags it. A 4-page walk returned 200 listings with no repeats.

Filters

Price, condition, size, brand, department, sub-category, discount and recency all filter server-side and were each measured cutting the result count — for example 6,655 matches to 1,536 for size M, and to 302 for the last 24 hours. Filters Enjoei accepts but ignores are not offered.

Size

A clothing field. Near-complete on womenswear, footwear and sportswear; effectively absent on bags, watches, electronics and toys, which carry no size on Enjoei.

Shop location

A shop's display line is a city and state on 17 of 25 shops measured; the other 8 show a merchandising badge instead. The two are returned separately, so a badge is never passed off as a location.

Account

No Enjoei account is involved. Shop counters are the public ones on the shop page. Sellers are private individuals running a shop page, so only the storefront — handle, display name, shop URL, avatar, joining date and public counters — is returned.

What people build with Enjoei

The jobs this data is most often used for.

8

endpoints

0/1/2

credits per call

01

Price a second-hand item for the Brazilian market: search comparable listings, then read what a shop's equivalents actually sold for with seller/sold.

02

Track resale value of a brand or model over time by polling search with a fixed brand and sub-category and recording the price distribution.

03

Find under-priced stock for resale: sort by biggest discount, or filter discount_min with a price ceiling, and check the offer range on each candidate.

04

Build a Brazilian second-hand feed for a fashion or sneaker app, filtered by department, size and condition.

What Enjoei data costs

The cheapest call here is 0 credits, 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/enjoei/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"query":"nike","per_page":30}'
python
import requests

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

Have a question? We got answers.

The questions people actually ask before wiring up Enjoei.

Get a free key →
What did the item actually sell for?

seller/sold answers that, and it is the reason to use this API for second-hand pricing in Brazil. Each row of a shop's completed sales carries both numbers: price, what the seller was asking, and sold_price, what a buyer actually paid. A measured example: a Nike t-shirt listed at R$65 sold for R$41. Enjoei publishes this per shop, 40 rows a page, newest first. There is no marketplace-wide sold search, and no sale date.

Is original_price a real discount?

Yes, and it is only there when it is real. Enjoei sends the reference price and the current price on every row, and on an undiscounted listing the two are the same number. Returning that as a struck-through price would invent a discount on every item, so original_price is returned only when it is genuinely higher than the price you pay. It was filled on 215 of 400 rows measured; on the other 185 it is null and discount_percent is 0.

Why can the price on a search row differ from the price on product/detail?

Because Enjoei's search index keeps its own copy of the price and it can lag behind a re-pricing. On 14 listings checked against their own product pages, product/detail matched the page 14 times out of 14, while the search-index copy differed on 5 of them, by as much as a third — one item indexed at R$160 was really R$238. Use search rows to find and rank items, and product/detail for the number you are going to quote or transact on.

What is the offer range on a listing?

Enjoei is a haggling marketplace: buyers make offers and sellers publish the band they will consider. product/detail returns it as offer, with accepted, min_price and max_price — for example a R$150 listing accepting offers between R$90 and R$149. It is a negotiating band, not a price anything sold at; for real sale prices use seller/sold.

Does the API tell me when a listing was posted or sold?

No, and no approximation is invented. Enjoei does not publish a listing date, a sold date, a like count, a view count, a colour or a per-listing seller rating anywhere a logged-out visitor can see, so none of them are returned. What you can do is filter by recency: published_within accepts 24h, 7d, 14d or 30d and Enjoei applies it server-side — on one measured query it cut 10,000+ matches to 302.

How many results can I page through?

Fifty rows per page, by cursor. Enjoei clamps the page size at 50 and silently ignores anything larger, so the API caps it too rather than promising a page it will not deliver. A 4-page walk returned 200 listings with no repeats. total_results is Enjoei's own count and stops at 10,000; when it does, total_results_capped comes back true, so you never mistake a ceiling for a total.

Can I sort by newest?

No. Enjoei's own ordering choices are relevance, cheapest, dearest and biggest discount, and those four are what the API offers. Other sort words are accepted by the source and then quietly ignored, which would look like a working filter and be a lie, so they are rejected with INVALID_PARAM instead. For recency use the published_within filter.

Whose data is in the seller block?

The public storefront only: the shop's @handle, its display name, shop URL, avatar and cover image, the date it joined, and its public counters — items for sale, items sold, likes received, followers and following. Sellers on Enjoei are private individuals running a shop page, so nothing beyond the shop page itself is read or returned.

What is the Enjoei API?

Enjoei API is a ReefAPI endpoint group for brazil's biggest second-hand marketplace: asking price, struck price and what items actually sold for. It returns live JSON through POST requests under /enjoei/v1.

Is the Enjoei API free to try?

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

Do I need an Enjoei login or account?

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

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

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

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