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
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
18 hours 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. |
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","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 a non-empty manufacturer name.
not_found
The source reported no manufacturer assignment for the supplied value.
lookup_error
A transport, timeout, rate-limit, or server failure remained after bounded retries. The row contains a short error value and is not charged as an item.
The Actor retries only transient failures such as HTTP 429, HTTP 5xx, timeouts, and connection resets. It does not blindly retry malformed input.
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. 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.
This Actor accesses anonymously reachable public lookup responses. It does not bypass authentication or CAPTCHA controls.
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 transient source or network failure exhausted retries.
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.
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.