Wish API

The price Wish charges, and the shipping it charges on top

The Wish API turns wish.com, the cross-border value marketplace, into clean JSON in six actions.

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

6 active endpoints, on 2 and 3 credit tiers.

  • POST/wish/v1/search
  • POST/wish/v1/product
  • POST/wish/v1/reviews
  • POST/wish/v1/similar
  • POST/wish/v1/merchant
  • POST/wish/v1/trending

What Wish endpoints does ReefAPI ship?

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

6 endpoints

search

3 cr

Keyword search across Wish with price, rating, shipping, deal and merchant-tier filters.

required
query
optional
market, limit, max_pages, min_price, max_price, min_rating

product

3 cr

Full product record.

required
product_id
optional
market, max_variants

reviews

2 cr

Buyer reviews for a product with the 1-5 star histogram.

required
product_id
optional
market, limit, offset

similar

3 cr

The related-products grid Wish shows under a product.

required
product_id
optional
market, limit

merchant

2 cr

A Wish store's display name, average rating and rating count.

required
merchant_id
optional
market

trending

3 cr

Wish's logged-out home feed.

required
optional
market, limit, offset

Every parameter, every allowed value →

Wish API

3 of 6 endpoints, ready to run

View docs ↗

About 30 products a page: id, title, URL, image, the price charged, the struck-through price where there is one, the discount, rating, review count, merchant id and Wish's own variant summary.

3 credits1 required · 6 optional
POST/wish/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 Wish API works

Wish 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 /wish/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.

From a keyword to the landed cost of one product

Two calls take you from a search to the price, the shipping and every variation of a single listing.

01search
POST/wish/v1/search
{"query": "wireless earbuds", "limit": 30, "market": "US"}

About 30 products with the price charged, the struck-through price where there is one, the rating and the merchant id. Take results[].product_id. In the 2026-09-23 check, 6 of 6 searches returned a full 30 rows.

02product
POST/wish/v1/product
{"product_id": "<results[0].product_id>", "market": "US"}

price, shipping and total_price, plus every colour and size with its own price and merchant-declared stock. On 8 products checked, the price matched the figure Wish prints on its own grid 8 of 8, and the struck-through price 8 of 8.

03reviews
POST/wish/v1/reviews
{"product_id": "<results[0].product_id>", "limit": 30}

Buyer reviews with the star histogram and the variation each one refers to. Many Wish listings have few or no reviews: 4 products sampled returned 1, 2, 1 and 0.

The landed cost of one listing - price, shipping and total - with every colour and size priced separately, plus whatever buyer reviews that listing has.

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

Wish prices a product per variation, and the shipping is charged on top

A Wish listing is a set of colour and size variations, each with its own price, its own shipping and its own merchant-declared stock. The headline price is the cheapest variation; the struck-through price belongs to that same variation. The API returns each figure under its own name so the number you store is the number a shopper pays.

Product (2026-09-23, US storefront)priceshippingWhat the API returns
Spiked Punk Dog Collar, 22 variations8.09 USD2.99 USDprice 8.09, price_max 9.56, shipping 2.99, total_price 11.08, list_price null
Large Dogs Choke Training Collar, 3 variations7.57 USD2.99 USDprice 7.57, price_max 7.74, list_price 10.21, discount_percent 25.9
PlusAcc Waterproof iPhone Case, 68 variations12.39 USD2.99 USDprice 12.39, list_price 18.38, total_price 15.38, variant_count 68

A product with no reviews has no rating: Wish sends 5.0 together with a review count of 0, and the API returns rating null and review_count 0 rather than a perfect score nobody gave. Across 180 search rows only 13 carried a real rating.

What Wish publishes, and what it does not

wish.com, priced against the storefront you choose. Measured on 2026-09-23 across 26 live calls in six actions, 180 search rows in 6 categories, 8 products compared against Wish's own printed price and 6 ids round-tripped. Four of these lines go against us.

The price matched Wish's own figure 8 of 8

On 8 products across 6 categories, price equalled the amount Wish prints on its own product grid, and the struck-through list price matched on 8 of 8 as well. Search ids resolved to the same product 6 of 6.

Shipping is returned, not implied

All 8 products checked shipped at 2.99 USD on top of the item price, which on an 8.09 USD item is 27 percent of the total. product returns shipping, shipping_max, total_price and the flat-rate threshold, and every variation carries its own.

Variants carry their own price and stock

From 1 to 393 variations per product, each with its colour, size, price, list price, shipping, merchant-declared inventory, purchase cap and delivery window. max_variants caps what is returned; variant_count always gives the true total.

Storefront changes the answer, and it is always stated

The same product returned 12.39 USD with a 18.38 list price and 68 variations on the US storefront, and 81.00 CNY with no list price and 1 variation on CN. Every response carries storefront and currency.

Against us: a list price only 41 percent of the time

73 of 180 search rows carried a struck-through price, and it swings by category: 26 of 30 for wireless earbuds, 0 of 30 for running shoes. Where the merchant published none, list_price is null rather than 0.

Against us: most listings have no rating

Only 13 of 180 search rows had a real rating. Wish sends 5.0 with a review count of 0 on unreviewed products; the API returns rating null and review_count 0 instead of a perfect score. On the product record, rating was present on 3 of 8 and the star histogram on 3 of 8.

Against us: no units sold, no verified stock total

Wish publishes no sales figure. Its num_bought counter saturates at 10 and a product with 107 reviews still reads 10, so it is not returned. total_inventory reads 50 on every product and is not returned either; what is real is each variation's merchant-declared inventory and purchase cap.

Against us: Wish's own search has no filters and no sort

Wish accepts filter tokens, including its own published ones, and returns identical results with and without them, so none are passed on. min_price, max_price and min_rating are applied by this API to the rows it retrieved, and filtered_out and rows_examined report exactly what was removed. There is no sort order, so none is offered.

Paging, and a total to distrust

About 30 usable products per page, up to 8 pages, so up to 150 rows per call. total_found is Wish's own count passed through untouched, but Wish experiments on it: the same query reported 156,961 on one call and a flat 500 on another. Page with next_offset.

Reviews without personal data

Rating, title, comment, date, the colour and size bought, photo count, helpful votes and country code, plus the 1-5 star histogram. The reviewer's name, user id, Facebook uid, signup date and pictures are never returned.

What people build with Wish

The jobs this data is most often used for.

6

endpoints

2/3

credits per call

01

Landed-cost price monitoring across a cross-border marketplace, with shipping and the item price kept apart instead of merged.

02

Competitive pricing research on low-cost goods: the charged price, the merchant's struck-through price and the discount computed from both.

03

Variant-level catalogue building: every colour and size with its own price, shipping, stock and purchase cap, up to several hundred per product.

04

Merchant due diligence: the store behind a listing with its rating, rating count, positive-feedback summary and business country.

What Wish 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/wish/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"query":"wireless earbuds","limit":10,"market":"US"}'
python
import requests

r = requests.post(
    "https://api.reefapi.com/wish/v1/search",
    headers={"x-api-key": REEF_KEY},
    json={
  "query": "wireless earbuds",
  "limit": 10,
  "market": "US"
},
)
print(r.json()["data"])
FAQ

Have a question? We got answers.

The questions people actually ask before wiring up Wish.

Get a free key →
Is the price the amount a buyer actually pays?

price is what Wish charges for the cheapest variation, in the storefront's currency, and shipping is charged on top of it. total_price is the two added together. On the 8 products checked on 2026-09-23 the price matched the figure Wish prints on its own product grid 8 times out of 8. Where variations differ, price_max carries the dearest one.

Why does shipping get its own field?

Because on Wish it is a large part of the bill. All 8 products checked on 2026-09-23 shipped at 2.99 USD, which on an 8.09 USD collar is 27 percent of what the buyer pays. product returns shipping, shipping_max, total_price and the flat-rate threshold, and every variation carries its own shipping figure.

How often is there a struck-through list price?

Less than half the time. Across 180 search rows in 6 categories, 73 carried a list price, which is 41 percent, and it varies sharply by category: 26 of 30 for wireless earbuds and 0 of 30 for running shoes. When there is none the field is null, never 0 and never a copy of the selling price.

Can I filter a search by price or rating?

Yes, with min_price, max_price and min_rating, and those are applied by this API to the rows it retrieves, not by Wish. Wish's own search accepts filter tokens and returns the identical results either way, so passing them on would be pretending. Raise max_pages to widen the pool and read filtered_out and rows_examined to see exactly what was removed: on a dog collar search, max_price 10 kept 34 of 71 rows and min_price 20 kept 7.

What does market do, and which values work?

It picks the Wish storefront the product is priced against, and it genuinely changes the answer: the same product came back as 12.39 USD with a 18.38 list price and 68 variations on US, and as 81.00 CNY with no list price and 1 variation on CN. US is the default and the reliable one; any is the cheapest and reports whichever storefront served it; GB is best-effort and returns MARKET_UNAVAILABLE when it cannot be reached. Every response states storefront and currency, so a number is never ambiguous.

How many results can I get for one query?

Wish serves about 30 usable products per page and the API walks up to 8 pages, so up to 150 rows per call with limit and max_pages. total_found is Wish's own match count and it is passed through untouched, but Wish runs an experiment on that number and the same query reported 156,961 on one call and a flat 500 on another, so do not use it for paging maths. Use next_offset.

Does Wish publish how many units have sold?

No. Wish exposes a num_bought counter that saturates at 10, and a product with 107 reviews still reports 10, so it is not a sales figure and this API does not return one. It also publishes no verified stock total: total_inventory reads 50 on every product. What is real is each variation's merchant-declared inventory and max_purchase_quantity, and both are returned as what they are.

What personal data comes back with reviews?

None. Wish's own review rows carry the reviewer's full name, user id, Facebook uid, signup date and profile pictures; none of that is returned. A review comes back as its rating, title, comment, date, the colour and size bought, the photo count, the helpful-vote counts and the reviewer's country code. Reviews are also thin on many listings: 4 products sampled returned 1, 2, 1 and 0 reviews.

What is the Wish API?

Wish API is a ReefAPI endpoint group for cross-border value marketplace: the price charged, the shipping on top, variants, merchant and reviews. It returns live JSON through POST requests under /wish/v1.

Is the Wish API free to try?

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

Do I need a Wish login or account?

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

Wish 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 Wish from an AI assistant or MCP client?

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