Domain to LinkedIn URL Resolver
Pricing
from $5.10 / 1,000 results
Domain to LinkedIn URL Resolver
Resolves a company domain, or a batch list of domains in one run, to its LinkedIn company URL, one row per domain. A URL is returned only when verified against the company's own site, the input name, or the domain; otherwise the row says why. Flat, Clay-ready, MCP-ready.
Pricing
from $5.10 / 1,000 results
Rating
4.9
(2)
Developer
Mamba Labs
Maintained by CommunityActor stats
8
Bookmarked
387
Total users
41
Monthly active users
0.74 hours
Issues response
6 days ago
Last modified
Categories
Share
๐ What can Domain to LinkedIn URL Resolver do?
Give it a company domain or name, or a list of domains in one run, and it returns each company's LinkedIn company URL, with social URLs and optional firmographics in the same flat row.
It returns a LinkedIn URL only when it can verify the page belongs to the company: the company's
own homepage links it, or the page's name is identical to the name the company site declares, or to
the name you provide. When nothing verifies a page, the row returns no URL and says why, rather than
a guess. It never requests a page on LinkedIn itself. Every row carries confidence,
confidence_score, and verification so you know how much to trust it.
| ๐ฆ What you get | โ๏ธ Features and integrations |
|---|---|
| ๐ LinkedIn company URL and slug, verified before it is returned ๐ฏ confidence, confidence_score, and verification on every row๐ Facebook, Instagram, X and YouTube URLs ๐งพ 24 flat fields, snake_case, one row per company | ๐ Batch mode, a list of domains in one run, one row each ๐ The company's own homepage read first for its LinkedIn link ๐๏ธ minConfidenceScore, a floor you set, below which no URL is returned๐งฌ Firmographics from search snippets, optional โฌ๏ธ Export to JSON, CSV, Excel, HTML or XML |
Bought by Clay users and RevOps teams whose LinkedIn URL column has gaps, and by anyone who needs a LinkedIn anchor before a social or ABM workflow.
๐ซ Every field is best-effort and nullable. When a source is blocked, rate-limited, or simply does not carry the data for a company, the field returns
nullrather than a guess. Breakage shows up asnull, never as a wrong value. Gate downstream logic on presence, not on assuming every row is complete.
๐ก Why use Domain to LinkedIn URL Resolver?
| If you want | Read these fields |
|---|---|
| The LinkedIn page | linkedin_company_url, linkedin_slug |
| To know whether to trust it | confidence, confidence_score, verification, resolution_method |
| To know whether a miss is real | degraded, degradation_reason |
| Other social profiles | facebook_url, instagram_url, twitter_url, youtube_url |
| Company size and sector | employee_count_approx, industry, hq_location |
| Audience and copy | follower_count, company_description |
๐ฏ confidence and resolution_method, and how to use them
resolution_method tells you how the URL was found:
| Value | Means |
|---|---|
homepage_link | The company's own homepage links the page, in its structured data (sameAs) or a plain link. The most reliable answer. |
pattern_match | A verified search result whose slug is one the domain implies. |
google_search | A verified search result whose slug is not one the domain implies. The value stays google_search for Clay column compatibility; the engines are Brave and Bing. |
not_found | No page verified. verification names the best candidate and why it was not returned. Read degraded before you treat it as an answer. |
error | No valid input was provided, or the lookup failed for this row. |
confidence_score (0 to 100) comes from the evidence that the page belongs to this company, not
from how the page was found:
| Score | Evidence |
|---|---|
| 95 | The homepage declares the page in its structured data (sameAs) |
| 92 | The homepage links the page |
| 85 | The page's name is identical to the name the company site declares |
| 80 | The page's name is identical to the company name you provided |
| 75 | The slug is one the domain implies and the page's name is identical to the domain name, and the domain exists |
| 55 or less | Not verified. No URL is returned. |
"Identical" means equal after lowercasing and removing punctuation and legal words such as Inc, Ltd,
and Group. "City of Cambridge" is not "Cambridge", so cambridge.org does not return the city's page.
confidence is the same score in words: high at 85 and up, medium from 70 to 84, low below.
minConfidenceScore (default 70) is the floor. A page scoring under it is not returned. Raise it
for fewer, surer answers; lower it for more answers and more wrong ones.
Pass high rows straight to enrichment. Review medium. Treat not_found as "not verified", and
read verification to see what was found and why it was held back.
๐ฉ slug_mismatch is a quality flag, not an error
It is true when the resolved slug differs from the one derived from the domain. brex.com derives
the stem brex, but the live page is /company/brexhq, so slug_mismatch is true.
That is the resolver landing on a non-obvious slug and telling you so. Useful when spot-checking a batch.
๐งฏ What a blocked row and a summary row mean
A not_found row with degraded: false is an answer: the search engines replied and none of them
carried a LinkedIn company page for this company.
A not_found row with degraded: true is not an answer. Its degradation_reason starts with
blocked: when every search engine refused the request, or timed_out: when the run ran out of
time before one replied. It says "This is not a confirmed absence." Rerun those rows.
A run that writes no company row at all, for example because the run budget ran out before the first
row, writes one summary row instead and still finishes successfully. It has no
company_domain, degraded: true, and a degradation_reason that starts with
run_outcome= (no_results, blocked, or timed_out), then names the search engines reached and
blocked, the run ID, and the build. It is never a company.
When the run's time is nearly spent, the actor stops starting new rows, keeps every row it already wrote, and says how many rows it did not start in the run's status message.
โถ๏ธ Ready-to-run examples
| Example | What it does |
|---|---|
| Find a LinkedIn Company URL from a Domain | The core job |
| Get a LinkedIn URL from a Company Name | Name-only input |
| Domain to LinkedIn with Firmographics | URL plus company data |
| Company Domain to Social Media URLs | All four social platforms |
| Force a Fresh Re-resolution | Bypass the cache |
| Resolve a Batch of Domains to LinkedIn URLs | Many domains, one run, one row each |
๐ What data can Domain to LinkedIn URL Resolver extract?
19 fields per company, plus the five bookkeeping fields described under Output.
| Field | What it holds |
|---|---|
linkedin_company_url, linkedin_slug | The resolved page |
resolution_method, confidence, slug_mismatch | How it was found and how much to trust it |
facebook_url, instagram_url, twitter_url, youtube_url | Other social profiles |
employee_count_approx, industry, hq_location | Firmographics, when includeFirmographics is on |
follower_count | LinkedIn audience size, as the search snippet states it |
company_name, company_description | Identity and copy |
company_domain, run_date | Input echo and bookkeeping |
โ ๏ธ Firmographics come from search result snippets about the LinkedIn page, not from the page.
follower_countandcompany_descriptionfill for most established companies.industry,employee_count_approxandhq_locationfill only when a snippet states them, which is uncommon. A null means "not in the snippet", never "zero". The output has no logo or founding year field: search snippets do not carry them.
โ ๏ธ
falseandnullmean different things on every row.falseis a measurement: the actor looked and the answer was no.nullis the absence of one: the actor could not look. When something it needed fails, the row comes back withdegraded: true, a plain-languagedegradation_reason, and every field it could not measure set tonullrather than to a confidentfalseor0. Filter ondegradedbefore you trust a negative.
๐ ๏ธ How to find a company's LinkedIn URL from its domain
- Open the Input tab and put a bare domain in
company_domain. - Add
company_nameif you have it. It sharpens the search. - Set
includeFirmographicsto"true"if you want company data as well as the URL. - Click Start.
- Filter on
confidenceand spot-check anything withslug_mismatch: true.
The Input tab opens with stripe.com and Stripe filled in. That run returns one row:
https://www.linkedin.com/company/stripe, pattern_match, high.
๐ Batch mode: many domains in one run
Put a list of bare domains in domains, one per line, and click Start. Every domain runs the
same resolution path as a single lookup and writes its own row, in input order, with its own
resolution_method and confidence. A domain that fails returns an error row with
degradation_reason set and the rest of the batch continues. A domain listed twice is looked up
once and written twice.
{"domains": ["stripe.com", "notion.so", "figma.com", "linear.app", "vercel.com"],"batchSize": 2}
Returns five rows, one per domain (measured on 2026-10-12 against the search path):
company_domain | linkedin_company_url | resolution_method | confidence |
|---|---|---|---|
| stripe.com | https://www.linkedin.com/company/stripe | pattern_match | high |
| notion.so | https://www.linkedin.com/company/notionhq | pattern_match | high |
| figma.com | https://www.linkedin.com/company/figma | pattern_match | high |
| linear.app | https://www.linkedin.com/company/linear | pattern_match | high |
| vercel.com | https://www.linkedin.com/company/vercel | pattern_match | high |
batchSize is how many domains resolve at the same time (default 2, maximum 10). Raise it for speed
only if you accept more degraded rows when a search engine starts refusing.
When domains has at least one entry it takes precedence over company_domain and company_name.
The price per row is the same as a single lookup; a batch pays the Actor start event once per run
instead of once per domain. From the API, the same input works with
POST /v2/acts/mambalabs~domain-to-linkedin-url-resolver/runs.
๐งช Using it in Clay
Add an Apify enrichment column and map your domain column to company_domain. Every input is
accepted as a string, which is what Clay sends.
Build a view filtered on confidence = "high" and route the rest to review. A row with no URL is
not a failure: it is the actor declining to guess.
๐งญ How resolution works
- The actor reads the company's own homepage once. A LinkedIn company page the homepage declares
(sameAs) or links is returned as
homepage_link, and no search runs. - Otherwise it runs one Brave search restricted to
linkedin.com/company, on the datacenter pool first and a residential IP second, and scores every LinkedIn page in the results against the name the homepage declares, the name you provided, and the domain. - When no Brave result clears the floor, it runs up to two Bing searches and scores those too.
- The best page is returned only when its score is at least
minConfidenceScore. Otherwise the row isnot_foundandverificationsays what was seen and why it was held back. - When every engine refuses, the row is
not_foundwithdegraded: trueand says so.
No request is sent to LinkedIn at any step. Firmographics, when enabled, are read from the Brave
result snippets about the chosen LinkedIn page, with the Bing snippet as a fallback. Social URLs come
from a single search query with a site: restriction per platform, which stops a "share on
LinkedIn" link inside a Facebook result from producing a cross-platform false positive.
Every request is capped by the time left in the run, so a slow search engine cannot run the clock out.
๐ต How much does it cost to resolve a LinkedIn URL?
You are charged once per row written.
| Plan | Per company | Per 1,000 companies |
|---|---|---|
| Free | $0.006 | $6.00 |
| Bronze | $0.0057 | $5.70 |
| Silver | $0.0054 | $5.40 |
| Gold | $0.0051 | $5.10 |
There is also an Actor start event at $0.00005, charged once per run per GB of memory. A batch run pays it once for the whole list.
Free Apify plans get 250 results per calendar month, resetting on the 1st. Paid plans have no monthly cap.
๐ Your spending limit is respected. Set a maximum cost per run in Apify, or max_charge_usd on the Input tab, and the run stops before it would go over, keeping every result already charged. Each row's billable_events_json lists the events that row was charged for.
๐ณ Every row written is billed, including
not_found, degraded, and summary rows. This actor is priced per dataset row. Anot_foundrow withdegraded: falseis a real answer. A degraded row or a summary row is billed the same way, so filter ondegradedand rerun those inputs rather than paying for them twice in a downstream step. TurningincludeFirmographicson does not change the price; it can add one more search and makes the run slower.
๐ Scheduled pricing change, 2026-10-26 12:00 UTC. Results move from Apify's default per-row event to a named
resultevent at the same price on every plan, so each result row costs exactly what it costs today. A run summary row and a blocked lookup row stop being charged. Until then every row is billed as described above.
โจ๏ธ Input
Everything is on the Input tab. Provide at least one of the first two.
| Field | Type | Default | What it does |
|---|---|---|---|
company_domain | string | none | Bare domain. Pattern matching needs this. |
company_name | string | none | Sharpens the search. Name-only input skips pattern matching. |
includeFirmographics | string | "false" | "true" also reads company data from search snippets about the LinkedIn page. |
skipCache | string | "false" | "true" forces a fresh resolution. |
domains | array of strings | none | Batch mode. One row per domain; takes precedence over the two single fields when it has at least one entry. |
batchSize | integer | 2 | Domains resolved concurrently per wave in batch mode, 1 to 10. Higher values meet search refusals sooner (see Batch mode). |
minConfidenceScore | string | "70" | The floor, 0 to 100. A LinkedIn page scoring under it is not returned. See the score table above. |
max_charge_usd | number | none | Optional. The run stops before the next result that would take this run's charges over this amount, and keeps every result already charged. Leave empty to rely only on the maximum cost per run you set in Apify. |
๐ค Output
One flat row per company, exportable as JSON, CSV, Excel, HTML or XML. This row is brex.com
with includeFirmographics on:
{"company_domain": "brex.com","company_name": "Brex","linkedin_company_url": "https://www.linkedin.com/company/brexhq","linkedin_slug": "brexhq","resolution_method": "homepage_link","confidence": "high","confidence_score": 95,"verification": "verified: the company homepage declares this page in its structured data (sameAs) (score 95)","slug_mismatch": true,"degraded": false,"degradation_reason": null,"facebook_url": "https://www.facebook.com/brexhq","instagram_url": "https://www.instagram.com/brexhq","twitter_url": "https://twitter.com/brexHQ","youtube_url": null,"employee_count_approx": null,"industry": null,"hq_location": null,"follower_count": "161,048","company_description": "Brex makes it easy for companies from startups to global enterprises to manage all their spend in one place, in real time.","run_date": "2026-10-12T06:30:00.000Z","row_status": "ok","error_reason": null,"billable_events_json": "[{\"event\":\"apify-default-dataset-item\",\"count\":1}]"}
๐งพ More fields on every row
| Field | Type | What it holds |
|---|---|---|
confidence_score | integer | 0 to 100, the evidence score behind confidence. On a row with no URL, the best candidate's score. Null on a degraded row. |
verification | string | For a returned URL, the evidence that verified it. For a row with no URL, the best candidate and why it was not returned. |
degraded, degradation_reason | boolean, string | true and a plain-language reason when a search engine refused or the run ran out of time, so a miss is not a confirmed absence. false and null otherwise. |
row_status | string | ok, degraded, error, or notice (a notice row carries a message, not a result). Present on every row. |
error_reason | string | Why the row is degraded or an error, in plain words. Null on an ok row. Present on every row. |
billable_events_json | string | JSON list of the pricing events this row was charged for, for example [{"event":"apify-default-dataset-item","count":1}]. Lets you reconcile a run from the dataset alone. The once per run start event is not repeated on rows. |
๐ก Tips
- Filter on
confidence = "high"before anything automated touches the URL. - Filter on
degraded = trueand rerun those inputs: a blocked lookup is not a missing page. - Have a list already? Put it in
domainsand run once. One row per domain, same price per row, one Actor start event instead of one per domain. - Leave
includeFirmographicsoff when you only need the URL. It is faster and costs the same. - Supply both domain and name where you have them. Pattern matching needs the domain; the search works better with the name.
- Treat a sustained pattern of one field going null across many rows (every row missing
follower_countfor a week, say) as a provider-side change worth flagging rather than a data problem on your side.
โ ๏ธ Known limits
The URL is only as current as the search index. A page renamed or created in the last few days may not appear yet, and a deleted page can still appear until the index drops it.
Firmographics are snippet deep. industry, employee_count_approx and hq_location are
usually null, because a search snippet rarely carries them. There is no logo or founding year
field.
Search engines can refuse a proxy pool. Each engine gets two attempts on fresh IPs, and Brave and
Bing meter separately, which defeats the common case. A persistent block across both shows up as a
not_found row with degraded: true and a blocked: reason, never as a quiet miss.
Verification trades fill for accuracy. On a 111 company test set the share of rows with a URL
fell from 98 percent to 77 percent when verification shipped on 2026-10-12, and the share of rows
with a wrong URL fell from 33 percent to 14 percent. A company whose site blocks automated visits, whose site declares a
different name from its LinkedIn page, and who links no LinkedIn page, comes back not_found.
Name-only input skips the homepage step, so a URL is returned only when the page's name is identical to the name you provided.
โ FAQ
Does it visit LinkedIn?
No. Since 2026-10-12 the actor sends no request to linkedin.com. The URL, the follower count, and the description come from public search results that link to the LinkedIn page.
Why does resolution_method say google_search when you use Brave and Bing?
The value is kept for Clay column compatibility with existing tables. The engines behind it are Brave and Bing.
What does slug_mismatch: true mean? Did something go wrong?
No. It means the live LinkedIn slug is not the one the domain implies, like brexhq for brex.com.
It is a spot-check flag, not an error.
Why is follower_count null but the URL resolved?
Firmographics are read only when includeFirmographics is on, and only from what the search snippets
state. The URL resolves independently.
Can I pass a company name with no domain?
Yes. Without a domain there is no homepage to read, so a URL is returned only when a LinkedIn page's name is identical to the name you provided (score 80).
Can I resolve many domains in one run?
Yes. Put the list in domains (one per line in the Console, a JSON array from the API) and every
domain gets its own row. A failed domain returns an error row and does not stop the batch.
Does it read personal LinkedIn profiles?
No. Company pages only, and only as search results.
๐งฉ Want other GTM data?
Mamba Labs builds custom actors for B2B go-to-market teams. The public versions of that work live here on the Store, so our users get the same tooling we build under contract.
Every actor in the suite takes a domain or a company and returns one flat row, so they stack in the same Clay table without reshaping anything.
๐ ๏ธ Need something custom built for you or your team? Tell us what you are trying to find and we will build it. Talk to Mamba Labs.
๐ Support
Found a bug or a company that resolves incorrectly? Open an issue on the Issues tab with the domain and the row, and we will look at it.
โน๏ธ Sourcing and legal. No request is sent to LinkedIn. The LinkedIn URL and the firmographic snippet come from public Brave and Bing search results, and social URLs from public search with a per-platform
site:restriction. No login is used and no personal profiles are read: company pages only, as search results. You are responsible for how you use the output.
โ๏ธ Unofficial
This actor is unofficial. It is not affiliated with, sponsored by, or endorsed by LinkedIn, Microsoft, Bing, DuckDuckGo or Brave. It reads publicly available search results only, with no account and no authenticated session.
Built by Mamba Labs.