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 /searchis broken on the live deployment: a live probe of/search?query=iphonereturned 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-9999returned HTTP 200 with{"status":true,"data":{"title":"","current_page":1,"last_page":1,"phones":[]}}— check for an emptyphonesarray, not the HTTP status, to detect a missing brand. GET /top-by-fansmislabels its owntitlefield: a live probe returned"title":"Top By Daily Interest"— the exact same stringGET /top-by-interestreturns — even though/top-by-fansranks by afavoritescount and/top-by-interestranks by ahitscount. Both returned 10 phones live this run; don't rely on thetitlefield 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/exampleURL it returns points at the livephone-specs-api.vercel.apphost, not the dead custom domains, though always with a plainhttp://scheme. That plainhttp://request itself works, but only as a 308 redirect to thehttps://version of the same path (confirmed live) — this quickstart useshttps://directly throughout.