Get Swappa data with one API
Swappa API returns live Swappa data as clean JSON for swappa The primary endpoint, search, returns product details including slug, name, brand, image and description.
3 active endpoints, on 1 and 2 credit tiers.
- POST/swappa/v1/search
- POST/swappa/v1/price
- POST/swappa/v1/product_detail
What Swappa endpoints does ReefAPI ship?
3 live read endpoints. Read-only data API: no writes, no account actions, no dashboard access on the target site.
Swappa API
3 of 3 endpoints, ready to run
Search Swappa for live listings.
{ "ok": true, "meta": { "api": "swappa", "endpoint": "search", "mode": "live", "latency_ms": 1849.5, "record_count": 25, "cache_hit": false, "completeness_pct": 100 }, "data": { "product": { "slug": "apple-iphone-15", "name": "Apple iPhone 15", "brand": "Apple", "image": "https://static.swappa.com/media/product/apple-iphone-15/apple-iphone-15-01.png", "description": "Apple iPhone 15 - Used and Refurbished", "url": "https://swappa.com/listings/apple-iphone-15", "guide_url": "https://swappa.com/guide/apple-iphone-15", "rating": { "average": 4.7, "review_count": 17 }, "price_range": { "low": 243, "high": 791, "currency": "USD" }, "offer_count": 238, "availability": "InStock" }, "listings": [ { "listing_id": "LAIY45602", "url": "https://swappa.com/listing/view/LAIY45602", "title": "Fair Apple iPhone 15 - Spectrum, 128 GB, Black, A2846", "headline": "30 DAY WARRANTY / TRUSTED SELLER", "price": 243, "currency": "USD", "price_valid_until": "2026-08-31", "availability": "InStock", "gtin": null, "product_slug": "apple-iphone-15", "brand": "Apple", "image": "https://static.swappa.com/images/cache/24/f6/24f63d710dfb70ffe758957850b63915.jpg", "image_count": 6, "quantity": 1, "featured": true, "phonecheck_certified": false, "payment_methods": [ "PayPal" ], "seller": { "name": "Everythingelectronics", "type": "business", "profile_id": "everythingelectronics", "rating": 4.5, "ratings_count": 332, "location": "Indianapolis, IN", "badges": [ "Trusted Seller", "Power Seller" ] }, "attributes": [ { "label": "condition", "value": "Fair" }, { "label": "battery_health", "value": "88%" }, { "label": "storage", "value": "128GB" } ], "condition": "Fair", "battery_health_pct": 88, "storage": "128GB", "memory": null, "color": "Black", "carrier": "Spectrum", "model_number": "A2846", "processor": null, "edition": null, "business_seller": true, "international_shipping": false }, { "listing_id": "LAJB10743", "url": "https://swappa.com/listing/view/LAJB10743", "title": "Good Apple iPhone 15 - Unlocked, 128 GB, Black, A2846", "headline": "Iphone 15 UNLOCKED!", "price": 335, "currency": "USD", "price_valid_until": "2026-09-02", "availability": "InStock", "gtin": "00784956710571", "product_slug": "apple-iphone-15", "brand": "Apple", "image": "https://static.swappa.com/images/cache/f1/e6/f1e61c8162e03eea23516a8098660b9c.jpg", "image_count": 5, "quantity": 1, "featured": true, "phonecheck_certified": false, "payment_methods": [ "PayPal" ], "seller": { "name": "FraVinci Tech", "type": "person", "profile_id": "PUF050", "rating": 0, "ratings_count": 0, "location": "Tampa, FL", "badges": null }, "attributes": [ { "label": "condition", "value": "Good" }, { "label": "battery_health", "value": null }, { "label": "storage", "value": "128GB" } ], "condition": "Good", "battery_health_pct": null, "storage": "128GB", "memory": null, "color": "Black", "carrier": "Unlocked", "model_number": "A2846", "processor": null, "edition": null, "business_seller": false, "international_shipping": false }, { "listing_id": "LABH78659", "url": "https://swappa.com/listing/view/LABH78659", "title": "Mint Apple iPhone 15 - AT&T, 128 GB, Black, A2846", "headline": "AT&T iPhone 15 128gb- Fast Free Shipping", "price": 343, "currency": "USD", "price_valid_until": "2026-09-11", "availability": "InStock", "gtin": "00400064179900", "product_slug": "apple-iphone-15", "brand": "Apple", "image": "https://static.swappa.com/images/cache/8b/a3/8ba324dc6152adfe7c791217c159434d.jpg", "image_count": 7, "quantity": 1, "featured": true, "phonecheck_certified": false, "payment_methods": [ "PayPal" ], "seller": { "name": "Global Gadgets Inc.", "type": "business", "profile_id": "ItsAllWireless", "rating": 4.5, "ratings_count": 4106, "location": "Conshohocken, PA", "badges": [ "Enterprise Seller" ] }, "attributes": [ { "label": "condition", "value": "Mint" }, { "label": "battery_health", "value": "100%" }, { "label": "storage", "value": "128GB" } ], "condition": "Mint", "battery_health_pct": 100, "storage": "128GB", "memory": null, "color": "Black", "carrier": "AT&T", "model_number": "A2846", "processor": null, "edition": null, "business_seller": true, "international_shipping": false } ], "filters_available": { "condition": [ { "value": "new", "label": "New" }, { "value": "mint", "label": "Mint" }, { "value": "good", "label": "Good" } ], "carrier": [ { "value": "att", "label": "AT&T" }, { "value": "mint", "label": "Mint Mobile" }, { "value": "t-mobile", "label": "T-Mobile" } ], "color": [ { "value": "black", "label": "Black" }, { "value": "blue", "label": "Blue" }, { "value": "green", "label": "Green" } ], "storage": [ { "value": "128gb", "label": "128 GB" }, { "value": "256gb", "label": "256 GB" }, { "value": "512gb", "label": "512 GB" } ], "modeln": [ { "value": "QTI4NDY", "label": "A2846" }, { "value": "QTMwODk", "label": "A3089" }, { "value": "QTMwOTA", "label": "A3090" } ], "sort": [ { "value": "price_low", "label": "Price (Low)" }, { "value": "price_high", "label": "Price (High)" }, { "value": "listing_created_newest", "label": "Listing Created (Newest)" } ], "flags": [ { "value": "with_warranty", "label": "With Warranty" }, { "value": "accepts_stripe", "label": "Accepts Stripe" }, { "value": "is_carrier_unlocked", "label": "Is Carrier Unlocked" } ] }, "models": [] } }
How the Swappa API works
Swappa is a normal ReefAPI surface — the same four rules that hold for every other engine on the key.
No OAuth app, no request signing, no per-site account. One key covers all 185 engines.
Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.
Credits, not seats. Failed and blocked calls are never charged, and cache hits cost nothing.
One envelope everywhere. meta carries latency_ms, record_count and the endpoint that answered.
Swappa condition grades, and which ones a product line actually offers
condition is Swappa's own grade for a used device, not a free-text description. Phones, tablets, laptops and consoles use a four-step ladder; simpler lines such as AirPods collapse to New and Used. Which grades a given model publishes comes back in filters_available.condition, so read that before filtering. Values below were measured 2026-08-27.
| condition value | Label returned | Offered by | Measured listing |
|---|---|---|---|
| new | New | Every line | LAJA02673, AirPods Pro 2nd gen, USB-C |
| mint | Mint | Phones, tablets, laptops, consoles | In filters_available.condition for apple-iphone-15 |
| good | Good | Phones, tablets, laptops, consoles | LAHO17340, PlayStation 5 825GB, 402 USD |
| fair | Fair | Phones, tablets, laptops, consoles | LAIY45602, iPhone 15 128GB, 243 USD, battery 88% |
| used | Used | Accessory-style lines only | LYLF67619, AirPods Pro 2nd gen, Lightning |
| any other value | rejected | n/a | condition=excellent returns INVALID_PARAM listing the five allowed values |
condition_schema on the detail response maps the grade to a schema.org value (Fair returned UsedCondition), and condition_criteria spells out what the grade means, three bullets for Fair: Noticeable wear and tear, Power cord/charger not required, Retail packaging and manuals not required. apple-iphone-15 published new, mint, good and fair; apple-airpods-pro-2nd-gen published only new and used.
What people build with Swappa
The jobs this data is most often used for.
endpoints
credits per call
Pricing and assortment teams use Swappa to search Swappa for live listings.
Brand-protection teams use Swappa to get re-check ONE listing's price, availability and condition, cheaply.
Retail analysts use Swappa to get one Swappa listing in full, by its listing code or its swappa.com URL.
What Swappa 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 →- 1,000 free credits on signup, no card
- One key, all 185 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 -X POST https://api.reefapi.com/swappa/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"model":"apple-iphone-15","max_results":25}'import requests
r = requests.post(
"https://api.reefapi.com/swappa/v1/search",
headers={"x-api-key": REEF_KEY},
json={
"model": "apple-iphone-15",
"max_results": 25
},
)
print(r.json()["data"])Have a question? We got answers.
The questions people actually ask before wiring up Swappa.
Get a free key →What does a Swappa listing_id look like?▾
Four uppercase letters followed by five digits, for example LAJA39074 or LAHO17340. It is opaque and never numeric, and it identifies one physical device from one seller rather than a model. Two 128GB black iPhone 15s in the same Fair grade came back as LAIY45602 at 243 USD and LAJA39074 at 315 USD in the same response.
Why are regular_price and on_sale always null on the price action?▾
Because a Swappa listing has one seller-set asking price and no struck-through previous price anywhere on the card, the listing page or its structured data. A live price call on LAJA39074 returned current_price 315.0, currency USD, regular_price null and on_sale null. Filling those in would mean inventing a discount. Use the model's own price history page if you need a reference price.
Does the Swappa price include shipping?▾
No, price is the asking price only. product_detail returns a separate shipping block: on LAJA39074 it was free true, rate 0.0, currency USD, ships_from Worcester, MA, handling "Ships in 2 business days or less with tracking and insurance", international false. Shipping is set per listing, so two listings of the same phone can differ.
How do I read carrier and lock status?▾
Each row carries a carrier string, which is the lock state rather than a network the phone merely works on: Unlocked on one measured iPhone 15 and Spectrum on another. product_detail adds carrier_compatibility with a network field and a compatible_carriers list, 23 entries for the unlocked one. On consoles and AirPods carrier is null, because those lines have no carrier facet at all.
What are the opaque tokens in filters_available.modeln and filters_available.edition?▾
They are base64 of the human label, so QTI4NDY is A2846, VVNCLUM is USB-C and TGlnaHRuaW5n is Lightning. Both forms work: pass the human value to model_number or edition, or paste the token back. On product lines that are sized rather than modelled, the modeln facet holds the size label instead of a regulatory model number.
What happens when a Swappa listing sells?▾
It is removed from the site, and price and product_detail return a typed NOT_FOUND rather than an empty payload. An invented code, ZZZZ00000, returned NOT_FOUND with the reason spelled out. in_stock is true while Swappa still offers Buy Now and null otherwise, never false, because silence is not a claim that something is out of stock.
When should I search by query and when by model?▾
query resolves your text to the single best-matching catalog model and returns the runners-up in models[]: playstation 5 resolved to the slug playstation-5 and listed 19 candidates including playstation-5-slim-digital-edition. model skips that resolution step, costs one fewer request and is repeatable. An unknown slug fails loudly: apple-iphone-99 returned NOT_FOUND telling you to use query instead.
Are the seller fields enough to tell a shop from an individual?▾
Yes. seller.type is business or person, and business_seller mirrors it on the row. Measured examples: Everythingelectronics, business, rating 4.5 over 332 ratings, badges Trusted Seller and Power Seller; and JEFFREY G., person, rating 5.0 over 1 rating, badges null. seller.location gives the ship-from city, and exclude_businesses filters shops out entirely.
What is the Swappa API?▾
Swappa API is a ReefAPI endpoint group for swappa It returns live JSON through POST requests under /swappa/v1.
Is the Swappa API free to try?▾
Yes. ReefAPI starts with 1,000 free credits, no card required. Swappa calls use the same shared credit balance as every other ReefAPI engine.
Do I need a Swappa login or account?▾
No login to Swappa 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 Swappa 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 Swappa API use?▾
Swappa actions currently cost 1-2 credits per successful call. Failed or blocked calls are free, and all APIs draw from one credit pool.
Can I call Swappa from an AI assistant or MCP client?▾
Yes. Connect ReefAPI once through MCP and your assistant can call swappa actions with the same key, credit pool and JSON envelope used by normal REST requests.
15 More APIs APIs on the same key
One key, one credit pool, one response envelope. If you are pulling Swappa, you are one call away from the rest of the category — no second contract, no second integration.
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 184 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.