MacVendors MAC Address Lookup
Pricing
from $2.32 / 1,000 item extracteds
MacVendors MAC Address Lookup
Resolve batches of MAC addresses and OUI prefixes to normalized manufacturer, lookup status, duplicate count, and MacVendors provenance records.
Pricing
from $2.32 / 1,000 item extracteds
Rating
0.0
(0)
Developer
Automation Lab
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Resolve batches of MAC addresses and OUI prefixes to manufacturer names with a MacVendors MAC address lookup workflow built for inventory enrichment.
Submit observed device identifiers and receive one normalized row per unique input with the OUI, manufacturer, lookup status, duplicate count, and source provenance.
What does this Actor do?
This Actor:
- accepts full 48-bit MAC addresses and 24-bit OUI prefixes;
- accepts colon, hyphen, dotted, and unseparated notation;
- validates every submitted value before starting source requests;
- normalizes values to uppercase colon-separated notation;
- deduplicates equivalent inputs;
- resolves manufacturers through the public MacVendors endpoint;
- exports explicit
found,not_found, orlookup_errorstatus; - preserves public source links and lookup timestamps.
It does not infer device models, ownership, location, or network activity. A manufacturer assignment identifies an address block, not necessarily the current device owner.
Who is it for?
Network inventory teams
Enrich switch, DHCP, Wi-Fi, or asset inventory exports with manufacturer names.
Security operations teams
Add vendor context to observed device lists before triage or classification.
Managed service providers
Normalize MAC address batches from multiple customer systems into a repeatable dataset contract.
Data engineers
Feed manufacturer lookup results into spreadsheets, databases, BI tools, or scheduled Apify workflows.
Why use this MacVendors lookup?
Raw lookup responses are useful for one address. Recurring inventory work needs a stable batch contract.
This Actor adds:
- strict input validation;
- normalized addresses and OUI values;
- input-type classification;
- duplicate accounting;
- bounded retries for transient failures;
- typed dataset rows;
- explicit provenance;
- Apify scheduling, API, webhook, and integration support.
Input
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
addresses | string array | Yes | — | Full MAC addresses or six-hex-digit OUI prefixes. |
maxItems | integer | No | 100 | Maximum unique values to process, from 1 to 200. |
Example:
{"addresses": ["44:38:39:ff:ef:57","00-1B-63","F4F5.D800.0001"],"maxItems": 3}
Supported address formats
The following formats are accepted:
44:38:39:FF:EF:5744-38-39-FF-EF-57443839FFEF574438.39FF.EF5744:38:3944-38-39443839
A full address must contain exactly 12 hexadecimal digits. An OUI prefix must contain exactly 6 hexadecimal digits.
The complete input batch is validated before charging or requesting MacVendors. One malformed entry fails the run so pipelines do not silently lose records.
Output fields
| Field | Description |
|---|---|
input | Original submitted representation. |
normalizedAddress | Uppercase colon-separated MAC address or OUI. |
oui | First three normalized octets. |
inputType | mac_address or oui_prefix. |
isLocallyAdministered | Local-administration bit (0x02) in the submitted first octet; not proof of randomization. |
isMulticast | Group/multicast bit (0x01) in the submitted first octet. |
manufacturer | Organization returned by MacVendors, or null. |
status | found, not_found, or lookup_error. |
duplicateCount | Occurrences of the normalized value in the submitted batch. |
source | MacVendors. |
sourceUrl | Public lookup URL for verification. |
sourceApiUrl | Endpoint used by the run. |
error | Bounded diagnostic for exhausted request failures, otherwise null. |
lookedUpAt | ISO 8601 completion timestamp. |
Output example
This is representative of current Actor behavior:
{"input": "44:38:39:ff:ef:57","normalizedAddress": "44:38:39:FF:EF:57","oui": "44:38:39","inputType": "mac_address","isLocallyAdministered": false,"isMulticast": false,"manufacturer": "Cumulus Networks, inc","status": "found","duplicateCount": 1,"source": "MacVendors","sourceUrl": "https://macvendors.com/query/44%3A38%3A39%3AFF%3AEF%3A57","sourceApiUrl": "https://api.macvendors.com/44%3A38%3A39%3AFF%3AEF%3A57","error": null,"lookedUpAt": "2026-09-04T06:40:43.724Z"}
Getting started
- Open the Actor in Apify Console.
- Add one or more values to MAC addresses or OUI prefixes.
- Keep
maxItemssmall for an initial run. - Click Start.
- Open the default dataset to inspect normalized results.
- Export JSON, CSV, Excel, XML, or another supported dataset format.
- Save the input as a Task when you need scheduling or integrations.
How much does it cost to look up MAC address manufacturers?
Pay-per-event pricing has two components:
- $0.0015 per run for the
startevent; - $0.003872 per completed lookup at the BRONZE tier.
A completed source response is billed under the item event. A request that exhausts all retries is exported for diagnosis without an item charge.
Approximate BRONZE examples:
| Completed lookups | Estimated Actor charge |
|---|---|
| 1 | about 0.005372 USD |
| 10 | about 0.04022 USD |
| 25 | about 0.0983 USD |
| 100 | about 0.3887 USD |
Higher subscription tiers receive the discounts shown on the Actor pricing tab. Platform compute charges and plan allowances are governed by Apify.
Batch and deduplication behavior
Equivalent notations resolve once per run.
For example, 44:38:39:ff:ef:57 and 443839FFEF57 produce one row whose duplicateCount is 2.
maxItems applies after normalization and deduplication. Input order determines which unique values are processed when the limit is smaller than the batch.
Status and failure behavior
found
MacVendors returned HTTP 200 with a bounded plain-text manufacturer name. Empty, HTML, structured error documents and oversized responses are rejected, not exported as manufacturers.
not_found
The source returned HTTP 404, indicating no manufacturer assignment for the supplied value. No other response establishes absence.
lookup_error
A transport, timeout, rate-limit, server, invalid-response or request-budget failure prevented a valid lookup. The row contains an actionable error value and is not charged as an item. Other rows are still processed; a partial-error batch retains the existing successful-run policy.
The Actor makes at most three attempts for transient HTTP 429/5xx, timeout and network failures. It does not blindly retry HTTP 401/403 or invalid response shapes. Numeric or HTTP-date Retry-After guidance is honored without retrying earlier than instructed. Each lookup has a 65-second request budget inside a 260-second run request budget; a wait beyond either budget produces an uncharged error row instead. A server-directed cooldown also applies to subsequent addresses, avoiding immediate quota retries. Requests remain sequential and at least 1.1 seconds apart.
Source limits and responsible request pacing
Requests are sequential and paced at approximately one request per second. This conservative behavior is intentional because the anonymous MacVendors service applies rate and daily usage limits.
A large batch can therefore take roughly one second per unique value, plus retry delays. The Actor limits a run to 200 unique lookups.
If a source quota is exhausted, wait for it to reset and rerun the Task. Increasing Actor memory will not bypass source limits.
Network inventory enrichment workflow
A repeatable workflow can be:
- Export distinct MAC addresses from an authorized network inventory.
- Submit them through an Actor Task.
- Join output using
normalizedAddressoroui. - Keep
statusandlookedUpAtfor auditability. - Schedule a later Task run when fresh source assignments are needed.
The Actor reports current lookup results. It does not maintain historical changes or send alerts by itself.
Export and integrations
Use the default Apify dataset with:
- JSON for applications;
- CSV or Excel for inventory analysts;
- webhooks for pipeline completion;
- Make or Zapier for no-code workflows;
- Google Sheets for review queues;
- the Apify API for scheduled enrichment jobs.
Every run has its own default dataset, so outputs from unrelated runs are not mixed.
API usage with cURL
curl -X POST \"https://api.apify.com/v2/acts/automation-lab~mac-address-oui-manufacturer-lookup/runs?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"addresses":["44:38:39:ff:ef:57","00-1B-63"],"maxItems":2}'
To wait for completion and retrieve dataset items, use the Apify run and dataset endpoints returned by the run response.
API usage with JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/mac-address-oui-manufacturer-lookup').call({addresses: ['44:38:39:ff:ef:57', '00-1B-63'],maxItems: 2,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
API usage with Python
import osfrom apify_client import ApifyClientclient = ApifyClient(os.environ['APIFY_TOKEN'])run = client.actor('automation-lab/mac-address-oui-manufacturer-lookup').call(run_input={'addresses': ['44:38:39:ff:ef:57', '00-1B-63'],'maxItems': 2,})items = client.dataset(run['defaultDatasetId']).list_items().itemsprint(items)
Use through Apify MCP
Add the Actor to Claude Code:
claude mcp add --transport http apify \"https://mcp.apify.com?tools=automation-lab/mac-address-oui-manufacturer-lookup"
Use the same configuration in Claude Desktop, Cursor, or VS Code:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=automation-lab/mac-address-oui-manufacturer-lookup"}}}
Example prompts:
- “Resolve these MAC addresses to manufacturers and return a compact table.”
- “Normalize this OUI list and identify which lookups were not found.”
- “Enrich this authorized network inventory and preserve provenance URLs.”
Accuracy and interpretation
Manufacturer assignments can change when address blocks are transferred or source data is updated.
Randomized or locally administered MAC addresses may not identify the device manufacturer. isLocallyAdministered and isMulticast are deterministic first-octet bits as defined in RFC 7042 section 2.1. For OUI inputs they describe the submitted prefix bits, not a specific device. Local administration does not prove randomization. Neither flag identifies a device or model. Both flags appear on every status, and neither changes source lookup policy or the manufacturer's returned value. The Actor does not claim that an OUI proves a device model, person, owner, or physical location.
Preserve status, sourceUrl, and lookedUpAt when results support operational decisions.
Legal and responsible use
Use the Actor only with identifiers you are authorized to process. Follow your organization's security and privacy policies, MacVendors terms, source rate limits, and applicable law.
MAC addresses can be device identifiers in some contexts. Avoid publishing inventories or combining results into invasive tracking profiles. Each normalized address or OUI is sent to MacVendors for lookup; its HTTP access logs are governed by its source policies. Submit only identifiers you are authorized to disclose to that public service.
The Actor uses no runtime AI, paid supplier API or cross-run cache. Inputs, dataset results and run logs remain in your Apify account under your account's retention settings; delete run storage through Apify when no longer needed. Our private diagnostic reports expire after 30 days. MacVendors is named only to identify the source; this independent Actor is not affiliated with or endorsed by MacVendors.
This Actor accesses anonymously reachable public lookup responses. It does not bypass authentication or CAPTCHA controls.
Diagnostics and privacy
Failed operations send sanitized diagnostic input, exceptions and actor/build/run IDs to our private GlitchTip service for repair. Secret fields and URL queries are removed; the submitted addresses inventory is redacted from both SDK reports and terminal snapshots. Reports are retained for 30 days. Exhausted-operation reports contain only bounded failure categories and aggregate attempt/retry/status counters, never source bodies or device identifiers.
Troubleshooting
Why did my input fail before any output?
Check that every entry contains exactly 6 or 12 hexadecimal digits. Remove labels, comments, or unsupported separators.
Why is manufacturer null?
Inspect status. not_found means the source has no assignment; lookup_error means a source/network failure, invalid response or bounded wait prevented a valid result. Read error; for source quota failures wait for the quota to reset before rerunning.
Why is my run slow?
The Actor deliberately performs about one request per second to respect source limits. Deduplicate the input and use maxItems to bound test runs.
Why are fewer rows returned than submitted values?
Equivalent values are deduplicated, and maxItems limits unique normalized lookups. Use duplicateCount to audit repeated inputs.
Support
For bugs or how-to questions, use this Actor's Issues tab in Apify Console. Include the run link and expected behavior, but do not post private inventories, credentials or tokens publicly.
FAQ
Can I submit only an OUI?
Yes. Supply six hexadecimal digits such as 44:38:39 or 443839.
Does this identify a device model?
No. It resolves a manufacturer organization associated with the address prefix.
Does it use a proxy?
No. The Actor calls the anonymous public endpoint directly and does not enable an automatic paid proxy fallback.
Can I schedule recurring runs?
Yes. Save the input as an Apify Task and attach a schedule. Each run returns current source data; change comparison and alerting belong in your downstream workflow.
Are duplicate values charged twice?
No. Equivalent inputs are normalized and resolved once per run.
Related Automation Lab Actors
- IP Geolocation & Network Lookup enriches public IPv4 and IPv6 addresses with network and location context.
- Open Food Facts EAN UPC GTIN Lookup demonstrates a related batch identifier-enrichment workflow for food products.
Choose this Actor when the input is specifically a MAC address or OUI and the required output is the MacVendors manufacturer assignment.