GSMArena phone specs
A device's full specification sheet grouped as on the site (network, launch, body, display, platform, memory, cameras, sound, comms, features, battery, misc, test results), plus the same values by spec key, highlights, popularity, hits, fans, price and links to pictures, prices and reviews. Normalized numbers come with every sheet: dimensions_mm (height, width, thickness), weight_g, chipset, ram_options_gb, storage_options_gb, battery_mah, display_inches, display_resolution (width, height), display_ppi, main_camera_mp and selfie_camera_mp (null when the sheet does not state them). include=pictures adds pictures (official images and review photos, with group and kind); include=prices adds prices (one row per region, store and memory version, with the price text, amount and currency symbol).
Every response includes credits_used: the credits this call cost.
Parameters
| name | type | description |
|---|---|---|
id | string | Device id (the number in its gsmarena.com link). Example: 13123 |
url | string | Instead of id: the device page link. |
q | string | Instead of id: the best match for these words. |
include | string | Extra parts, comma-separated: pictures (the device's photo gallery), prices (store prices by region and memory version). Each part costs extra. |
Every endpoint also takes fresh, raw, fields (see lean responses and caching).
Example
curl "https://api.api.sh/gsmarena/v1/phone?id=13123" \
-H "x-api-key: $APISH_KEY" import os, requests
res = requests.get(
"https://api.api.sh/gsmarena/v1/phone",
params={"id": "13123"},
headers={"x-api-key": os.environ["APISH_KEY"]},
timeout=120,
)
res.raise_for_status()
data = res.json() const url = new URL("https://api.api.sh/gsmarena/v1/phone");
url.searchParams.set("id", "13123");
const res = await fetch(url, { headers: { "x-api-key": process.env.APISH_KEY } });
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
const data = await res.json(); Response
A JSON object with the fields described above, plus raw (the source's own data), cached, fetched_at and credits_used. Errors return {"success": false, "error": "…"} with the HTTP status (see errors). A lookup that ran but found nothing (404) costs the price above; refused calls and errors on our side are free (what's charged).