Swappie APIswappie.com ↗
Retrieve refurbished iPhone variant pricing, condition grades, storage options, and stock availability across Swappie's supported countries via one API endpoint.
What is the Swappie API?
The Swappie API exposes refurbished iPhone pricing and variant availability through a single endpoint, get_iphone_prices, returning up to 14 response fields per call including variant-level color, storage, condition grade, battery type, price, and live stock status. Coverage spans multiple Swappie markets — Sweden, Finland, Germany, and the UK among others — with prices returned in the local currency of each country.
curl -X GET 'https://api.parse.bot/scraper/d563a3e4-932d-4483-9e08-6884a53dfa3f/get_iphone_prices?model=iPhone+15&country=se' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace swappie-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: Swappie refurbished iPhone pricing — browse variants by model."""
from parse_apis.swappie_com_api import Swappie, ModelNotFound
client = Swappie()
# Fetch all pricing variants for iPhone 15 in Sweden
try:
pricing = client.pricing.get(model="iPhone 15", country="se")
except ModelNotFound:
print("Model not found on Swappie")
raise
print(f"{pricing.model} ({pricing.country}): {pricing.total_variants} variants")
print(f"Colors: {pricing.available_colors}")
print(f"Storages (GB): {pricing.available_storages_gb}")
print(f"Grades: {pricing.available_grades}")
# Find the cheapest variant in stock
in_stock = [v for v in pricing.variants if v.stock > 0]
if in_stock:
cheapest = min(in_stock, key=lambda v: v.price)
print(
f"\nCheapest in stock: {cheapest.color} {cheapest.storage_gb}GB "
f"grade {cheapest.grade} — {cheapest.price} {cheapest.currency} "
f"(stock: {cheapest.stock}, id: {cheapest.id})"
)
print("\nexercised: pricing.get / Pricing fields / Variant fields")
Returns all available variants and prices for a specific iPhone model in a given country. Each variant represents a unique combination of color, storage, condition grade, and battery type. Prices are in the local currency of the selected country (SEK for Sweden, EUR for Finland/Germany/etc). A single request returns all variants without pagination.
| Param | Type | Description |
|---|---|---|
| modelrequired | string | iPhone model name as displayed on Swappie (e.g. 'iPhone 15', 'iPhone 14 Pro Max', 'iPhone 13 mini'). |
| country | string | Country code for pricing and availability (e.g. 'se', 'fi', 'de', 'uk'). Determines currency and stock. |
{
"type": "object",
"fields": {
"model": "The model name queried",
"country": "Country code used",
"variants": "Array of variant objects each with id, name, color, storage_gb, grade, battery_type, price, currency, reference_price, stock, sim_type, and slug",
"total_variants": "Total number of variant combinations available",
"available_colors": "Array of color options for this model",
"available_grades": "Array of condition grades (A=Premium, B=Excellent, C=Good, D=Fair)",
"available_storages_gb": "Array of storage sizes in GB",
"available_battery_types": "Array of battery type options"
},
"sample": {
"data": {
"model": "iPhone 15",
"country": "se",
"variants": [
{
"id": "SMAP467VD",
"name": "iPhone 15",
"slug": "iphone-15-128gb-svart-4",
"color": "Black",
"grade": "D",
"price": 4749,
"stock": 2,
"currency": "SEK",
"sim_type": "dual_SIM",
"storage_gb": 128,
"battery_type": "Standard",
"reference_price": 4749
}
],
"total_variants": 104,
"available_colors": [
"Pink",
"Yellow",
"Green",
"Blue",
"Black"
],
"available_grades": [
"A",
"B",
"C",
"D"
],
"available_storages_gb": [
512,
256,
128
],
"available_battery_types": [
"Premium",
"Standard",
"Prime"
]
},
"status": "success"
}
}About the Swappie API
What the API Returns
The get_iphone_prices endpoint accepts a model parameter (e.g. 'iPhone 15', 'iPhone 14 Pro Max', 'iPhone 13 mini') and an optional country code ('se', 'fi', 'de', 'uk'). The response contains a variants array where each object describes a unique combination of color, storage capacity in GB, condition grade, and battery type. Each variant carries its own price, currency, reference_price (the comparison retail price), and stock indicator.
Condition Grades and Variant Fields
Swappie uses a four-tier grading system exposed through the grade field on every variant: A (Premium), B (Excellent), C (Good), and D (Fair). The battery_type field distinguishes between original and replacement battery options. Top-level summary fields — available_colors, available_grades, available_storages_gb, available_battery_types, and total_variants — give a quick inventory snapshot without iterating every variant object.
Country and Currency Handling
Passing a country code determines which market's pricing and stock data are returned. Sweden (se) returns SEK prices; Finland (fi) and Germany (de) return EUR. Omitting the country parameter falls back to a default market. Because prices and availability differ per country, applications comparing cross-market deals should issue separate calls per country code rather than assuming a single response covers all markets.
The Swappie API is a managed, monitored endpoint for swappie.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when swappie.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official swappie.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a refurbished iPhone price tracker that alerts users when a specific grade-and-storage combination drops below a threshold.
- Compare
reference_priceagainstpriceacross variants to surface the highest-discount listings per model. - Display localized pricing by passing different
countrycodes and using the returnedcurrencyfield. - Filter
variantsbygrade(A–D) to show only condition-specific options in a buyer-facing product comparison tool. - Check
stockstatus across storage sizes to identify which iPhone 14 Pro Max capacities are currently available in a given market. - Aggregate
available_colorsandavailable_storages_gbarrays to generate a full configurator UI without hardcoding Swappie's inventory. - Monitor
battery_typefield to distinguish original-battery devices from replacement-battery units when advising buyers.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Swappie have an official developer API?+
What does the `variants` array actually contain per object?+
id, display name, color, storage_gb, grade (A/B/C/D), battery_type, price, currency, reference_price, stock status, and a sim_ field indicating SIM configuration. Each object represents one purchasable combination on Swappie for the queried model and country.Does the API cover Swappie models other than iPhones — for example, Samsung or iPad listings?+
model and country parameters supported by get_iphone_prices. You can fork it on Parse and revise it to add endpoints for other device categories Swappie lists.Can I retrieve historical price trends or track price changes over time?+
How fresh is the pricing data, and does it reflect real-time stock?+
stock status as it appears on Swappie at the time of the request. Swappie's inventory changes throughout the day, so for stock-sensitive applications it is advisable to poll periodically rather than cache results for extended periods.