Phone — entry 004 of 7
Phone Specification
Phone Specs API is an open-source, keyless wrapper around GSMArena's device database, returning brand lists, per-phone specifications, and search results as JSON — maintained by a single developer (Azhari Muhammad M) and deployed on Vercel. Both README-documented custom domains (api-mobilespecs.azharimm.dev for v1, phone-specs-api-2.azharimm.dev for v2) no longer resolve, but the underlying Vercel deployment is still live and reachable directly: its root endpoint returned a 200 JSON payload confirming auth "None" and https true, and a live OPTIONS preflight carried Access-Control-Allow-Origin: * (cors reconfirmed "yes"); the /brands and /latest routes intermittently 500 with a 429 from the upstream GSMArena scrape target, a source-side rate-limit rather than the API itself being down.
Phone Specification is a free, keyless wrapper around GSMArena's device database. Its README-documented custom domains (api-mobilespecs.azharimm.dev and phone-specs-api-2.azharimm.dev) no longer resolve at all — DNS fails outright — but the underlying Vercel deployment behind them is still live and reachable directly at phone-specs-api.vercel.app, and its root endpoint returns a JSON map of every route (brands, per-brand phone lists, phone specs by slug, search, latest, top-by-interest, top-by-fans) with no key required for any of them.
GreatAPIs Score
Auth quickstart
- No API key required. A live GET against the root endpoint returns `{"status":true,"data":{...}}` describing every route with no credentials needed, and every probe this run — brand list, phone list, top lists — succeeded fully unauthenticated.
Your key is stored only in this browser (localStorage) and sent directly to the API — never to greatapis.
List phones for a brand
GEThttps://phone-specs-api.vercel.app/brands/razer-phones-117
{"status":true,"data":{"title":"Razer phones","current_page":1,"last_page":1,"phones":[{"brand":"Razer ","phone_name":"Phone 2","slug":"razer_phone_2-9363","image":"https://fdn2.gsmarena.com/vv/bigpic/razer-phone2-.jpg","detail":"http://phone-specs-api.vercel.app/razer_phone_2-9363"},{"brand":"Razer ","phone_name":"Phone","slug":"razer_phone-8923","image":"https://fdn2.gsmarena.com/vv/bigpic/razer-phone.jpg","detail":"http://phone-specs-api.vercel.app/razer_phone-8923"}]}}Developer reference
https://phone-specs-api.vercel.appGotchas & limits
- `GET /search` is broken on the live deployment: a live probe of `/search?query=iphone` returned HTTP 500 with `{"status":false,"error":"Something went wrong: Error: Could not find Chrome (ver. 123.0.6312.58)..."}` — the backend shells out to Puppeteer to scrape GSMArena's search results and no Chrome binary is installed on this serverless deployment, so the route fails on every call, not intermittently.
- An unknown or malformed brand slug does not 404: a live `GET /brands/nonexistent-9999` returned HTTP 200 with `{"status":true,"data":{"title":"","current_page":1,"last_page":1,"phones":[]}}` — check for an empty `phones` array, not the HTTP status, to detect a missing brand.
- `GET /top-by-fans` mislabels its own `title` field: a live probe returned `"title":"Top By Daily Interest"` — the exact same string `GET /top-by-interest` returns — even though `/top-by-fans` ranks by a `favorites` count and `/top-by-interest` ranks by a `hits` count. Both returned 10 phones live this run; don't rely on the `title` field to distinguish the two lists.
- The README's own custom domains (api-mobilespecs.azharimm.dev, phone-specs-api-2.azharimm.dev) fail DNS resolution entirely (confirmed live this run) — the API has already moved on itself: every self-referential `detail`/`example` URL it returns points at the live `phone-specs-api.vercel.app` host, not the dead custom domains, though always with a plain `http://` scheme. That plain `http://` request itself works, but only as a 308 redirect to the `https://` version of the same path (confirmed live) — this quickstart uses `https://` directly throughout.