MacVendors MAC Address Lookup avatar

MacVendors MAC Address Lookup

Pricing

from $2.32 / 1,000 item extracteds

Go to Apify Store
MacVendors MAC Address Lookup

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

Automation Lab

Maintained by Community

Actor 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, or lookup_error status;
  • 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

FieldTypeRequiredDefaultDescription
addressesstring arrayYes—Full MAC addresses or six-hex-digit OUI prefixes.
maxItemsintegerNo100Maximum 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:57
  • 44-38-39-FF-EF-57
  • 443839FFEF57
  • 4438.39FF.EF57
  • 44:38:39
  • 44-38-39
  • 443839

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

FieldDescription
inputOriginal submitted representation.
normalizedAddressUppercase colon-separated MAC address or OUI.
ouiFirst three normalized octets.
inputTypemac_address or oui_prefix.
isLocallyAdministeredLocal-administration bit (0x02) in the submitted first octet; not proof of randomization.
isMulticastGroup/multicast bit (0x01) in the submitted first octet.
manufacturerOrganization returned by MacVendors, or null.
statusfound, not_found, or lookup_error.
duplicateCountOccurrences of the normalized value in the submitted batch.
sourceMacVendors.
sourceUrlPublic lookup URL for verification.
sourceApiUrlEndpoint used by the run.
errorBounded diagnostic for exhausted request failures, otherwise null.
lookedUpAtISO 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

  1. Open the Actor in Apify Console.
  2. Add one or more values to MAC addresses or OUI prefixes.
  3. Keep maxItems small for an initial run.
  4. Click Start.
  5. Open the default dataset to inspect normalized results.
  6. Export JSON, CSV, Excel, XML, or another supported dataset format.
  7. 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 start event;
  • $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 lookupsEstimated Actor charge
1about 0.005372 USD
10about 0.04022 USD
25about 0.0983 USD
100about 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:

  1. Export distinct MAC addresses from an authorized network inventory.
  2. Submit them through an Actor Task.
  3. Join output using normalizedAddress or oui.
  4. Keep status and lookedUpAt for auditability.
  5. 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 os
from apify_client import ApifyClient
client = 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().items
print(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.

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.

Choose this Actor when the input is specifically a MAC address or OUI and the required output is the MacVendors manufacturer assignment.