{
	"openapi": "3.1.0",
	"info": {
		"title": "MACLookup API",
		"version": "2.0.0",
		"summary": "Vendor and organization lookup for MAC addresses, OUIs and MAC prefixes.",
		"description": "Resolves a MAC address, OUI or prefix to the organization the IEEE Registration Authority assigned it to, using the IEEE and Wireshark manufacturer databases.\n\nNo key and no registration are needed. One rate limit applies to everyone: 10 requests per second and 25 000 requests every six hours.\n\nA prefix no registrant holds is a successful response with `found: false`, not an error. Coverage, field meanings and the accepted notations are documented at https://maclookup.app/api-v2/documentation.",
		"contact": {
			"name": "MACLookup",
			"url": "https://maclookup.app",
			"email": "info@maclookup.app"
		},
		"termsOfService": "https://maclookup.app/terms-and-conditions"
	},
	"servers": [
		{
			"url": "https://api.maclookup.app",
			"description": "Public API"
		}
	],
	"externalDocs": {
		"description": "API documentation",
		"url": "https://maclookup.app/api-v2/documentation"
	},
	"paths": {
		"/v2/macs/{mac}": {
			"get": {
				"operationId": "getMacAddress",
				"summary": "Look up the organization assigned to a MAC address or prefix",
				"description": "Returns the registrant, the address block it holds and the dates on the record. A prefix of six hexadecimal digits is enough, and a longer address is matched on its first six digits.",
				"parameters": [
					{
						"name": "mac",
						"in": "path",
						"required": true,
						"schema": {
							"type": "string"
						},
						"description": "A MAC address, OUI or prefix. At least 6 hexadecimal digits are required; separators (\":\", \"-\", \".\", \" \") are optional, may be mixed and are case-insensitive. Longer input is accepted and only the first 6 hexadecimal digits are matched. Examples: 001A2B, 00:1A:2B, 00-1A-2B, 001A.2B and 001A2B3C4D5E, 00:1A:2B:3C:4D:5E, 00-1A-2B-3C-4D-5E, 001A.2B3C.4D5E, 00.1A.2B.3C.4D.5E."
					},
					{
						"name": "format",
						"in": "query",
						"required": false,
						"schema": {
							"type": "string",
							"enum": [
								"json",
								"jsonp",
								"xml"
							],
							"default": "json"
						},
						"description": "Response format. Defaults to JSON."
					},
					{
						"name": "callback",
						"in": "query",
						"required": false,
						"schema": {
							"type": "string",
							"default": "_cb"
						},
						"description": "JSONP callback name, used only with `format=jsonp`. Defaults to `_cb`."
					},
					{
						"name": "apiKey",
						"in": "query",
						"required": false,
						"deprecated": true,
						"schema": {
							"type": "string"
						},
						"description": "Keys are no longer issued. Existing keys remain valid until April 2027 and they keep the higher limits they were issued with."
					}
				],
				"responses": {
					"200": {
						"description": "A result. `found: false` means the address is valid and no registrant holds it.",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"description": "A lookup result. Every field is always present.",
									"required": [
										"success",
										"found",
										"macPrefix",
										"company",
										"address",
										"country",
										"blockStart",
										"blockEnd",
										"blockSize",
										"blockType",
										"updated",
										"isRand",
										"isPrivate"
									],
									"properties": {
										"success": {
											"type": "boolean",
											"description": "True when the request was processed. False only on an error response."
										},
										"found": {
											"type": "boolean",
											"description": "True when a registrant holds the address or prefix. False is a successful response, not an error: every other field is then empty and `blockSize` is 0."
										},
										"macPrefix": {
											"type": "string",
											"description": "The prefix the request matched, upper case without separators. Empty when nothing matched."
										},
										"company": {
											"type": "string",
											"description": "Registered organization name. Empty when nothing matched."
										},
										"address": {
											"type": "string",
											"description": "Registered address of the organization. Empty when nothing matched."
										},
										"country": {
											"type": "string",
											"description": "ISO 3166-1 alpha-2 country code of the registered address. Empty when nothing matched."
										},
										"blockStart": {
											"type": "string",
											"description": "First address of the assigned block, twelve hexadecimal digits. Empty when nothing matched."
										},
										"blockEnd": {
											"type": "string",
											"description": "Last address of the assigned block, twelve hexadecimal digits. Empty when nothing matched."
										},
										"blockSize": {
											"type": "integer",
											"description": "Highest offset inside the block — `blockEnd` minus `blockStart` — which is one less than the number of addresses the block holds (MA-L 16,777,216, MA-M 1,048,576, MA-S 4,096). 0 when nothing matched."
										},
										"blockType": {
											"type": "string",
											"description": "Assignment type of the block: MA-L, MA-M, MA-S, CID, IAB. Empty when nothing matched.",
											"enum": [
												"MA-L",
												"MA-M",
												"MA-S",
												"CID",
												"IAB",
												""
											]
										},
										"updated": {
											"type": "string",
											"description": "Date the record was last updated, `YYYY-MM-DD`. Empty when nothing matched."
										},
										"isRand": {
											"type": "boolean",
											"description": "True when the prefix is one a device may transmit while unassociated, or when nothing matched — an unassigned prefix is treated as a randomized one."
										},
										"isPrivate": {
											"type": "boolean",
											"description": "True when the registrant keeps its name and address out of the public listing."
										}
									}
								},
								"examples": {
									"assigned": {
										"summary": "A prefix held by an organization",
										"value": {
											"success": true,
											"found": true,
											"macPrefix": "001A2B",
											"company": "Ayecom Technology Co., Ltd.",
											"address": "No. 25, R&D Road 2, Science-Based Industrial Park, Hsinchu  300, TW",
											"country": "TW",
											"blockStart": "001A2B000000",
											"blockEnd": "001A2BFFFFFF",
											"blockSize": 16777215,
											"blockType": "MA-L",
											"updated": "2015-11-17",
											"isRand": false,
											"isPrivate": false
										}
									},
									"unassigned": {
										"summary": "A valid prefix no organization holds",
										"value": {
											"success": true,
											"found": false,
											"macPrefix": "",
											"company": "",
											"address": "",
											"country": "",
											"blockStart": "",
											"blockEnd": "",
											"blockSize": 0,
											"blockType": "",
											"updated": "",
											"isRand": true,
											"isPrivate": false
										}
									}
								}
							},
							"application/javascript": {
								"schema": {
									"type": "string"
								},
								"examples": {
									"jsonp": {
										"summary": "The same payload wrapped in the callback",
										"value": "_cb({\"success\":true,\"found\":true,\"macPrefix\":\"001A2B\",\"company\":\"Ayecom Technology Co., Ltd.\",\"address\":\"No. 25, R&D Road 2, Science-Based Industrial Park, Hsinchu  300, TW\",\"country\":\"TW\",\"blockStart\":\"001A2B000000\",\"blockEnd\":\"001A2BFFFFFF\",\"blockSize\":16777215,\"blockType\":\"MA-L\",\"updated\":\"2015-11-17\",\"isRand\":false,\"isPrivate\":false})"
									}
								}
							},
							"application/xml": {
								"schema": {
									"type": "string"
								},
								"description": "The same fields as an XML document rooted at `<response>`. Note that `blockEnd` is spelled `BlockEnd` in this format."
							}
						}
					},
					"400": {
						"description": "The address or prefix carried fewer than six hexadecimal digits.",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"description": "An error response. `success` is false and no lookup field is present.",
									"required": [
										"success",
										"error",
										"errorCode",
										"moreInfo"
									],
									"properties": {
										"success": {
											"type": "boolean",
											"const": false
										},
										"error": {
											"type": "string"
										},
										"errorCode": {
											"type": "integer"
										},
										"moreInfo": {
											"type": "string",
											"format": "uri"
										}
									}
								},
								"examples": {
									"error101": {
										"summary": "MAC must be greater than 5 chars",
										"value": {
											"success": false,
											"error": "MAC must be greater than 5 chars",
											"errorCode": 101,
											"moreInfo": "https://maclookup.app/api-v2/documentation"
										}
									}
								}
							}
						}
					},
					"429": {
						"description": "More than 10 requests per second or 25 000 requests in six hours were sent.",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"description": "An error response. `success` is false and no lookup field is present.",
									"required": [
										"success",
										"error",
										"errorCode",
										"moreInfo"
									],
									"properties": {
										"success": {
											"type": "boolean",
											"const": false
										},
										"error": {
											"type": "string"
										},
										"errorCode": {
											"type": "integer"
										},
										"moreInfo": {
											"type": "string",
											"format": "uri"
										}
									}
								},
								"examples": {
									"error429": {
										"summary": "Too Many Requests",
										"value": {
											"success": false,
											"error": "Too Many Requests",
											"errorCode": 429,
											"moreInfo": "https://maclookup.app/api-v2/rate-limits"
										}
									}
								}
							}
						}
					}
				}
			}
		},
		"/v2/macs/{mac}/company/name": {
			"get": {
				"operationId": "getCompanyName",
				"summary": "Look up only the organization name",
				"description": "Answers with the organization name as plain text, for callers that need nothing else. A prefix no registrant holds answers `*NO COMPANY*`, and one whose registrant keeps its details out of the public listing answers `*PRIVATE*`.",
				"parameters": [
					{
						"name": "mac",
						"in": "path",
						"required": true,
						"schema": {
							"type": "string"
						},
						"description": "A MAC address, OUI or prefix. At least 6 hexadecimal digits are required; separators (\":\", \"-\", \".\", \" \") are optional, may be mixed and are case-insensitive. Longer input is accepted and only the first 6 hexadecimal digits are matched. Examples: 001A2B, 00:1A:2B, 00-1A-2B, 001A.2B and 001A2B3C4D5E, 00:1A:2B:3C:4D:5E, 00-1A-2B-3C-4D-5E, 001A.2B3C.4D5E, 00.1A.2B.3C.4D.5E."
					}
				],
				"responses": {
					"200": {
						"description": "The organization name, as plain text.",
						"content": {
							"text/plain": {
								"schema": {
									"type": "string"
								},
								"examples": {
									"assigned": {
										"value": "Ayecom Technology Co., Ltd."
									}
								}
							}
						}
					}
				}
			}
		}
	},
	"tags": [
		{
			"name": "lookup",
			"description": "Resolve an address, OUI or prefix to its registrant."
		}
	]
}