Identify a Mac, iPad or iPhone by serial number

Resolves an Apple serial number to its exact model, including 2021+ randomized serials whose characters encode nothing (so no character-decoder can read them). Macs, iPads and iPhones resolve; device_type carries Apple's device class. status says what came back (resolved, unknown_serial, unsupported, retry) so a batch never has to parse note. record is the device's history on Macfax: first seen, how often it has been looked up (in buckets), countries in 30 days, and any listing, report or sanitization record on file. For a Mac it also reports whether a verified Macfax report exists for the serial (report carries its URL) and what the model is worth (market: the same object /api/v1/market returns, or null). Lookup ≠ proof: it cannot verify condition, Activation Lock, or possession; a Macfax report can. One credit answers one distinct serial, any Apple device and any year, and the same serial again within 24 hours is free. Running a batch: https://macfax.com/developers#batch. Rate limits: 10/min and 200/day per anonymous IP; 100/min and 2000/day with a free key; 100/min and 5000/day with a paid key.

get/api/v1/lookup

Request

  • Base URL: https://macfax.com
  • URL: https://macfax.com/api/v1/lookup
  • Auth: one of:
    • none
    • HTTP bearer
    • API key in header X-Api-Key
    • API key in query parameter api_key

Query parameters

serialstring required

10 characters on 2021+ devices (a letter first, then digits and consonants: never a vowel, B, S or Z), 11-12 on older ones. Anything else is a free 400, never a billed resolution.

context'inventory' | 'intake' | 'resale' | 'buyer' | 'support' | 'other'

Optional. Why the serial is being looked up: inventory (counting devices an organization holds), intake (devices arriving for refurbishment, trade-in or repair), resale (pricing or listing one to sell), buyer (checking one before buying), support, or other. Set it once in your client. Any other value is a free 400.

run_idstring uuid

Optional. A UUID you mint once per batch and send with every serial in it, so the run's answers group together. Ignored when it is not a UUID.

Response

The answer for this serial, including the unresolved ones: status tells them apart, and billing says what the call cost.

metaobject

Example response

{
  "data": {
    "device_type": "Mac laptops"
  }
}

Changes

No recorded changes to this operation across all 1 revision of this API.