Gazelle API

Every refurbished phone Gazelle sells, with a price for each grade and a real unit count

The Gazelle API returns buy.gazelle.com, the US first-party refurbished phone and tablet store, as clean JSON in four actions: search, product, facets and collections.

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

4 active endpoints, on 1, 3, 4 and 6 credit tiers.

  • POST/gazelle/v1/search
  • POST/gazelle/v1/product
  • POST/gazelle/v1/facets
  • POST/gazelle/v1/collections

What Gazelle 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

6 cr

Browse the Gazelle catalogue.

required
—
optional
collection, q, brand, model, storage, carrier, color, condition, product_type, min_price, max_price, in_stock_only, sort, limit, page

product

4 cr

The COMPLETE live offer table of one Gazelle product and, by default, of every sibling produc…

required
handle
optional
include_group, in_stock_only_offers

facets

3 cr

Gazelle's own inventory census of one collection.

required
—
optional
collection, filters, min_price, max_price

collections

1 cr

Every collection the Gazelle storefront publishes.

required
—
optional
q, limit

Every parameter, every allowed value →

Gazelle API

4 of 4 endpoints, ready to run

View docs ↗

The complete model matrix in one call: every capacity and carrier of that model, each colour and cosmetic grade with its own price, the real unit count behind it, and the new-device MSRP to measure the saving against.

4 credits1 required · 2 optional
POST/gazelle/v1/product
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 Gazelle API works

Gazelle 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 438 engines.

02
Call
POST /gazelle/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 or 4 or 6 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 one model to every storage and carrier Gazelle has, with real unit counts

Two calls. The search finds the model line, the product call returns the whole matrix behind it.

01search { query: "iphone", in_stock: true }
POSTsearch { query: "iphone", in_stock: true }

The buyable grid: handle, model line, brand, storage, carrier, colour and the price band, with price_min and price_min_available side by side so a sold-out cheapest variant cannot be mistaken for an offer.

02product { handle: "iphone-se-2nd-gen-64gb-unlocked-2" }
POSTproduct { handle: "iphone-se-2nd-gen-64gb-unlocked-2" }

Every storage and carrier sibling of that model with its full offer table: condition, price, price_minor, units_in_stock, incoming and next_incoming_date, plus the new-device msrp so the saving is computable.

A per-variant, per-condition price and stock table for one Apple or Samsung model, with the unit counts the storefront never prints.

request
curl -X POST https://api.reefapi.com/gazelle/v1/product \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"handle":"iphone-17e-256gb-unlocked"}'
response envelope
{
  "ok": true,
  "data": { … },
  "meta": {
    "api": "gazelle",
    "endpoint": "product",
    "mode": "live",
    "latency_ms": …,
    "record_count": …
  },
  "error": null
}

Gazelle's three cosmetic grades, and what each one does to the price

The grade names are Gazelle's own, read from its own variant options and its own filter form; nothing is remapped onto a scale of ours. The price column is one measured run on the iPhone 17e 256 GB (Unlocked), the same device re-quoted at each grade — it is there to show that the grade is a price ladder, and the exact figures move with the market. The product column is Gazelle's own count from its own filter form the same day: nearly every one of its 1,000 live products carries all three grades, which is why the grade you want is usually in stock on some products and sold out on others rather than missing from the catalogue.

grade (Gazelle's own name)what it meansiPhone 17e 256 GBproducts at this grade
Fairvisible wear — the cheapest tierUSD 489.99922
Goodlight wearUSD 509.99923
Excellentminimal to no visible wearUSD 524.99922

Measured 2026-10-08. The grade selects VARIANTS, so a product is returned when any of its variants matches and is then quoted at the cheapest matching one. Because a grade is often the thing that is sold out rather than the thing that is missing, combine the grade with in_stock_only to see what can be bought today.

What was measured, on 2026-10-08

Gazelle is a first-party US store, not a marketplace: it buys the device in, grades it and resells it under its own warranty. These are the limits worth knowing before you build on it.

One country, one currency

One country, one currency: Gazelle ships inside the United States and quotes USD only. There is no second storefront.

The store's own product count overstates the catalogue

Gazelle's own collections endpoint overstates its size — it claims 4,058 products for the whole store where the catalogue pages out at 1,000, and 1,224 MacBooks and 2 Apple Watches where both collections return nothing at all and the storefront itself prints 'no products found'. That number is returned as products_count_claimed and never as a live count; use facets or search for a figure you can rely on.

What is actually in stock

There are no laptops and no watches in stock, although the collections still exist. The live catalogue measured 824 phones, 175 tablets and one digital warranty.

Trade-in payouts are not here

No trade-in payouts. Gazelle does buy devices back, but the quoting runs on ecoATM's systems rather than on its own storefront, so there is no first-party payout table to read — unlike the Swappie API, which publishes both sides.

No IMEI, GTIN or serial

No IMEI, no GTIN or EAN, no per-unit serial. The sku is Gazelle's own stock code, such as GSB10016290.

No reviews or ratings

No reviews or ratings: the storefront loads its review widget separately and publishes no aggregate rating in the page.

Money is normalised, and a zero is not a price

Prices are normalised to USD major units everywhere, with price_minor beside them in cents. The source itself ships money in two different scales on two of its own surfaces, and a crossed-out price of '0.00' — which is most of the ones it publishes — is returned as null rather than as a free device.

What people build with Gazelle

The jobs this data is most often used for.

4

endpoints

1/3/4/6

credits per call

01

Price your own refurbished phone inventory against a US market leader at the right condition, using Gazelle's own three grades instead of a mapping you invented.

02

Measure the real cost of condition: one call returns the cheapest price at Fair, Good and Excellent for the same device — 489.99 / 509.99 / 524.99 USD on an iPhone 17e 256 GB in one measured run.

03

See what is actually buyable, not what is listed: only 464 of 13,329 published variants were in stock when measured, and on 55 of 153 in-stock products the cheapest listing is the one that is gone.

04

Compare a refurbished price against the new-device MSRP the store itself publishes, per capacity and per carrier, instead of sourcing list prices separately.

What Gazelle 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 438 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/gazelle/v1/product \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"handle":"iphone-17e-256gb-unlocked"}'
python
import requests

r = requests.post(
    "https://api.reefapi.com/gazelle/v1/product",
    headers={"x-api-key": REEF_KEY},
    json={
  "handle": "iphone-17e-256gb-unlocked"
},
)
print(r.json()["data"])
FAQ

Have a question? We got answers.

The questions people actually ask before wiring up Gazelle.

Get a free key →
What is the Gazelle API?▾

Gazelle API is a ReefAPI endpoint group for the us refurbished-phone store as json: every model with a price for each cosmetic grade, every capacity and carrier, the real unit count behind each variant, and the new-device msrp to measure the saving against. It returns live JSON through POST requests under /gazelle/v1.

Is the Gazelle API free to try?▾

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

Do I need a Gazelle login or account?▾

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

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

Can I call Gazelle from an AI assistant or MCP client?▾

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

Is the Gazelle API a Gazelle scraper?▾

It is the managed alternative to a DIY Gazelle scraper. Instead of building and maintaining your own scraper — proxies, headless browsers, captcha and constant breakage — you call one ReefAPI endpoint and get the same the us refurbished-phone store as json: every model with a price for each cosmetic grade, every capacity and carrier, the real unit count behind each variant, and the new-device msrp to measure the saving against back as clean JSON.

Why does my Gazelle scraper keep getting blocked?▾

Most Gazelle scrapers break on anti-bot defenses, rate limits and IP bans that need rotating residential proxies and browser fingerprinting to clear. ReefAPI handles all of that for you — no proxies, no captchas, no maintenance — and returns live JSON. Blocked calls are free.

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 437 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-10-08.