Apple identifiers
Understanding common Apple codes and identifiers
Apple use many different identifiers with their products. The table below illustrates the differences between some of the most important codes:
Name | Looks like | Also called | Represents |
---|---|---|---|
Model | MC605FD/A |
Marketing part number (MPN), Part number, Order number |
A specific model, including storage, configuration, distribution and sale type information. Similar in scope but distinct from a configuration code (CC) or a configured to order (CTO) code. |
Family number | A1784 M8493 |
Model number, "A" number |
A family of models sold in a given region, coded for Apple's own ordering systems. |
Internal name | N92AP |
Board ID, Hardware model |
The underlying hardware platform a device is built on. Expressed as an internal name class with an optional hardware revision. Often used to target software and firmware. |
Identifier | iPhone9,3 |
Model identifier | A high-level class of Apple device. |
Serial number | C8QH6T96DPNG |
An individual Apple device. 3 different formats, 1 of which is variable-length. Distinct from an MLB serial, which has 2 different formats. |
The API supports many other Apple identifiers, most of which are described below.
Note that we can expose Apple GSX service data for some clients.
Apple serial numbers
The API supports all three of Apple's structured serial number formats: legacy
, 2000
and 2010
. Examples:
F4412SAM0001
is alegacy
format serial (for the early 128k Mac)84021NCV3NP
is a2000
format serialC8QH6T96DPNG
is a2010
format serial
The latest format 2021
is composed of a random selection of characters and can therefore not be used to derive additional information about a device.
https://di-api.reincubate.com/v1/apple-serials/C8QH6T96DPNG/
$ python -m deviceidentifier.cli.apple_serial C8QH6T96DPNG
{ "anonymised": "C8QH6•••DPNG", "configurationCode": { "code": "DPNG", "appleInternalNameClass": { "id": "N92" }, "image": { "height": 120, "url": "https://di-api.reincubate.com/resource-159c9e87a3d6bbf5075bb030fa2925a0/", "width": 120 }, "skuHint": "iPhone 4 CDMA (8GB)" }, "coverageUrl": "https://checkcoverage.apple.com/gb/en?sn=C8QH6T96DPNG", "id": "C8QH6T96DPNG", "manufacturing": { "city": "", "company": "", "country": "China", "date": "2012-02-05", "flag": "🇨🇳", "id": "C8Q" }, "serialType": "2010", "uniqueId": { "productionNo": 31524, "value": "T96" } }
Apple MLB serial numbers
The API supports Apple's main logic board (MLB) serial formats, for both 13 and 17 digit codes.
https://di-api.reincubate.com/v1/apple-mlb-serials/C02443500KZG2QDA7/
$ python -m deviceidentifier.cli.apple_mlb_serial C02443500KZG2QDA7
{ "anonymised": "C02443•••KZ••••••", "boardType": "500", "cc": "KZ", "eeeCode": "G2QD", "id": "C02443500KZG2QDA7", "kk": "A7", "productionPlant": { "city": "", "company": "Tech Com, Quanta Computer Susidiary", "country": "China", "date": "2014-10-22", "flag": "🇨🇳", "id": "C02" }, "serialType": "2010", "uniqueId": { "id": null, "productionNo": null } }
Apple model numbers (MPN)
Also known as: Marketing Part Number (MPN)
An Apple model number identifies a particular hardware configuration of an Apple product. Apple model numbers can be presented with or without their regional or sale type encoding. These are also known as a marketing part number, or MPN. MPN is a misnomer in the sense that model numbers aren't actually numbers.
Model numbers are always prefixed with a sale code (often but not necessarily M
), and usually follow with a letter and some numbers. They end with an optional sale region indicator of variable length.
What's encoded in an Apple model number?
Apple Model codes can provide the sale region of a device, as well as whether it was sold at retail, refurbished, or personalised, and the following data:
- Apple Internal name class. This can be used to narrow it to a range of internal names.
- Apple Identifier.
- Sale region. The broad region that the device was intended to be sold in. This is stored as an optional part of the number.
- Model specification. MPNs are reliable for indicating case size, colour, material and storage for iPhones, iPads, Apple Watches and computers.
- OEM carrier. MPNs are typically made available to a discrete range of carriers, and carrier range can be identified by examining them.
- Sale type. ie. whether the unit was sold as retail, refurbished, replaced, or personalised.
Example Model numbers
Number | Notes |
---|---|
MC605FD/A |
An iPhone 4, black, 32GB, made for Austria, Liechtenstein, Switzerland |
MC605LL/A |
iPhone 4, black, 32GB, made for the US |
NN572LL/A |
An iPhone 7 Plus, made for the US |
MKHQ2 |
iPad 6th gen, pink, 32GB, no sale region |
MD298AE |
iPhone 5, black, 16GB, made for Saudi Arabia |
Working with Apple Model numbers
- Example Apple Model direct API request: MC605FD/A
- Example Apple Model client library request:
$ python -m deviceidentifier.cli.apple_model MC605FD/A`
{ "anonymised": "C605", "appleInternalNameClass": { "id": "N90" }, "appleIdentifier": { "id": "iPhone3,1", "image": { "height": 330, "url": "https://di-api.reincubate.com/resource-26b007e1007180a28e272036775a48a0/", "width": 450 }, "product": { "line": "iPhone", "sku": "iPhone 4" }, "specs_page": "https://support.apple.com/kb/SP587", "value": {}, "variant": "GSM" }, "id": "C605", "region": { "flags": "🇦🇹🇱🇮🇨🇭", "name": "Austria, Liechtenstein, Switzerland" }, "specification": { "case_size": null, "colour": "Black", "material": null, "storage": "32 GB" }, "distribution": null, "factory_lock": 0, "type": "Retail" }
Apple identifiers
Apple identifiers are their core, top-level model identifier, such as iPhone9,3
.
https://di-api.reincubate.com/v1/apple-identifiers/iPhone9,3/
$ python -m deviceidentifier.cli.apple_identifier iPhone9,3
{ "id": "iPhone9,3", "image": { "height": 330, "url": "https://di-api.reincubate.com/resource-d8c14fc2a4dfcf27d5a217fb5e4c0cc4/", "width": 450 }, "product": { "line": "iPhone", "sku": "iPhone 7" }, "specs_page": "https://support.apple.com/kb/SP743", "value": { "official_tradein": { "url": "https://www.apple.com/shop/trade-in", "value": "$175.00" } }, "variant": "GSM" }
Apple internal names
Internal names are Apple's internal model numbers, like N90AP
. They are sometimes referred to as BoardConfig
, and also -- misleadingly -- as HardwareModel
.
https://di-api.reincubate.com/v1/apple-internal-names/N92AP/
$ python -m deviceidentifier.cli.apple_internal_name N92AP
{ "id": "N92AP", "anonymised": "N92AP", "revision": null, "appleInternalNameClass": { "id": "N92" }, "platform": "s5l8930x", "bdid": 6, "cpid": 35120, "appleIdentifier": { "id": "iPhone3,3", "image": { "height": 330, "url": "https://di-api.reincubate.com/resource-1e7820cb714e3d477534f291c0f87e83/", "width": 450 }, "product": { "line": "iPhone", "sku": "iPhone 4" }, "variant": "CDMA" }, "firmware": [ { "build": "11D257", "filesize": 165768907, "ota": true, "required_build": "11A465", "required_version": "7.0", "signed": true, "signing_started": "2018-11-01", "signing_stopped": null, "url": "http://appldnld.apple.com/iOS7.1/031-4897.20140627.JCWhk/d52a3e7a1a2c16c8c400c6829a6d6fe6d5e00760.zip", "version": "7.1.2" }, ... ] }
Apple IDFA / IDFV
identifierForAdvertiser
(IDFA) and identifierForVendor
(IDFV) values replaced the UDID after iOS 5. They are set per application, or per vendor.
Apple state this of the IDFA:
iOS 6 introduces the Advertising Identifier, a non-permanent, non-personal device identifier, that advertising networks will use to give you more control over advertisers’ ability to use tracking methods. If you choose to limit ad tracking, advertising networks using the Advertising Identifier may no longer gather information to serve you targeted ads. In the future all advertising networks will be required to use the Advertising Identifier. However, until advertising networks transition to using the Advertising Identifier you may still receive targeted ads from other networks.
And this for the IDFV:
An alphanumeric string that uniquely identifies a device to the app’s vendor. (read-only)
The value of this property is the same for apps that come from the same vendor running on the same device. A different value is returned for apps on the same device that come from different vendors, and for apps on different devices regardless of vendor.
Ole Begemann has written more on the migration from UDID.
https://di-api.reincubate.com/v1/apple-idfas/002ebf12-a125-5ddf-a739-67c3c5d20177/
$ python -m deviceidentifier.cli.apple_idfa 002ebf12-a125-5ddf-a739-67c3c5d20177
{ "anonymised": "••••••••-••••-••••-••••-••••••••••••", "formatted": "002ebf12-a125-5ddf-a739-67c3c5d20177" }
Apple Unique Device Identifiers (UDIDs)
There are two formats of UDID:
-
2007
: This format was introduced with the first iPhone and used on devices introduced up until 2018. It is a non-reversible composite identifier built from IMEI, ECID and MAC values. It is represented as a 40 character lowercase hex value. -
2018
: This newer format was introduced for device models manufactured in 2018 and onwards (ie. iPhone XS, XS Max, XR, and Apple Watch Series 4). It is an uppercase 8 character hex value joined to a 16 character uppercase hex value by a dash (-
) in the format00000000-0000000000000000
.
Apple usually uses this ID to associate a device with an iCloud ID. This also holds the Find My iPhone activation status. The UDID was deprecated for use within iOS applications with the introduction of iOS 5, though it still has a number of other uses
https://di-api.reincubate.com/v1/apple-udids/00008020-00166D4A2130003B/
$ python -m deviceidentifier.cli.apple_udid 00008020-00166D4A2130003B
{ "anonymised": "••••••••-••••••••••••••••", "compromised": false, "formatted": "00008020-00166D4A2130003B", "format": "2018", "ecid": 32800, "cpid": "00166d4a2130003b" }
Apple Family numbers / "A" numbers
Apple describe these for each phone on their "Identify your iPhone model" page.
https://di-api.reincubate.com/v1/apple-anumbers/A1784/
python -m deviceidentifier.cli.apple_anumber A1784
{ "appleIdentifier": { "id": "iPhone9,4", "image": { "height": 330, "url": "https://di-api.reincubate.com/resource-d8c14fc2a4dfcf27d5a217fb5e4c0cc4/", "width": 450 }, "product": { "line": "iPhone", "sku": "iPhone 7 Plus" }, "variant": "GSM" } }