Domain to LinkedIn URL Resolver
Pricing
from $0.07 / 1,000 result extracteds
Domain to LinkedIn URL Resolver
Resolve company domains to LinkedIn company URLs with evidence for CRM enrichment, RevOps, sales prospecting, and lead-generation workflows.
Pricing
from $0.07 / 1,000 result extracteds
Rating
0.0
(0)
Developer
Automation Lab
Maintained by CommunityActor stats
1
Bookmarked
88
Total users
36
Monthly active users
16 days ago
Last modified
Categories
Share
Find LinkedIn company URLs from company domains with public evidence.
This Apify Actor turns a list of company domains into LinkedIn company page URLs for CRM enrichment, lead generation, sales operations, and account research workflows.
It is designed to be safe and practical: it checks public company websites first, optionally checks public search-result evidence, and never requires LinkedIn login credentials.
What does Domain to LinkedIn URL Resolver do?
Domain to LinkedIn URL Resolver maps website domains such as zapier.com, airtable.com, or stripe.com to public LinkedIn company page URLs.
For every input domain, the actor returns:
- ✅ The original input domain
- ✅ The normalized website domain
- ✅ The discovered LinkedIn company URL
- ✅ Resolution status
- ✅ Confidence score
- ✅ Evidence URL where the match was found
- ✅ Checked URLs for auditability
- ✅ Error details for invalid or unresolved domains
Who is it for?
Sales and data teams use domain-to-LinkedIn resolution before enrichment and outreach.
- 🧑💼 Sales operations teams cleaning CRM company records
- 📈 Growth teams preparing account-based marketing lists
- 🔍 Lead generation agencies enriching domain lists
- 🧰 RevOps teams matching domains to LinkedIn company profiles
- 🧪 Data teams building company identity graphs
- 🤖 Automation builders connecting Apify, HubSpot, Airtable, Clay, and Google Sheets
Why use this actor?
Many B2B workflows start with a company domain but need a LinkedIn company URL.
LinkedIn URLs help with:
- company research
- employee-count enrichment
- industry classification
- social proof checks
- account matching
- outbound personalization
- deduplication across data vendors
This actor focuses on the first step: resolving the URL with evidence.
How it works
The resolver uses an HTTP-first workflow.
- It normalizes each submitted domain.
- It checks the company homepage.
- It checks common public pages such as
/about,/company, and/contact. - It extracts outbound
linkedin.com/company/,linkedin.com/school/, andlinkedin.com/showcase/links. - If enabled, it checks public Bing search-result evidence.
- It returns one dataset row for every input.
Identical input batches and resolution settings can reuse their complete result for up to six hours. Cached rows preserve the original resolvedAt timestamp and report cacheHit: true plus cacheAgeSecs. Set forceFresh: true when a compliance or high-stakes workflow needs a new lookup; the fresh result replaces the reusable cache.
The submitted website origin is checked first. If that homepage cannot be reached because of a network, DNS, TLS, or connection error, the resolver makes bounded attempts with the corresponding www origin and HTTP origin. Ordinary HTTP errors do not trigger every origin variant.
Safe public-data approach
This actor does not scrape private LinkedIn data.
It does not need:
- LinkedIn cookies
- LinkedIn account credentials
- browser automation
- CAPTCHA solving
- private company-page details
If a domain cannot be resolved safely from public evidence, it is returned as unresolved.
Data output
| Field | Type | Description |
|---|---|---|
inputDomain | string | Original submitted domain or URL |
normalizedDomain | string/null | Parsed domain without leading www. |
homepageUrl | string/null | Normalized homepage URL |
linkedinUrl | string/null | Discovered LinkedIn company/school/showcase URL |
status | string | resolved, unresolved, or invalid |
confidence | number | Confidence score from 0 to 1 |
evidenceUrl | string/null | Page or search URL where evidence was found |
evidenceType | string | homepage_link, company_page_link, search_result, or none |
checkedUrls | array | Website/search URLs attempted |
error | string/null | Last validation or request issue |
resolvedAt | string | ISO timestamp when public evidence was checked |
cacheHit | boolean | Whether the row came from the six-hour result cache |
cacheAgeSecs | number/null | Cache age in seconds, or null for a fresh lookup |
Example output
{"inputDomain": "zapier.com","normalizedDomain": "zapier.com","homepageUrl": "https://zapier.com/","linkedinUrl": "https://www.linkedin.com/company/zapier/","status": "resolved","confidence": 0.95,"evidenceUrl": "https://zapier.com/","evidenceType": "homepage_link","checkedUrls": ["https://zapier.com/"],"error": null,"resolvedAt": "2026-06-18T00:00:00.000Z","cacheHit": false,"cacheAgeSecs": null}
How much does it cost to resolve domains to LinkedIn company URLs?
The actor uses pay-per-event pricing.
You pay a $0.005 start event for each run and a tiered per-result event for each processed domain saved to the dataset.
The BRONZE per-result price is $0.00010851, with lower prices on higher Apify tiers. This makes the cost predictable for CRM batches: one input domain equals one output row.
Input configuration
Company domains or URLs
Add domains in the domains field.
Examples:
zapier.comairtable.comhttps://stripe.comwww.notion.so
Use public search fallback
Enable includeSearchFallback to check public Bing evidence when the company website does not expose a LinkedIn link.
Disable it if you only want first-party website evidence.
Force a fresh lookup
forceFresh defaults to false, allowing complete identical batches to reuse results for up to six hours. Set it to true to bypass a fresh cache entry, perform the lookups again, and replace the cache. Result charges remain one per submitted domain in either mode.
Pages to check per domain
maxPagesPerDomain controls how many common public website paths are checked.
The actor tries pages in this order:
- homepage
- about
- about-us
- company
- contact
- contact-us
- team
How to use this actor
- Open the actor on Apify.
- Add your company domains to the input.
- Keep public search fallback enabled for higher coverage.
- Start the run.
- Export the dataset as CSV, JSON, Excel, or via API.
- Join the result back to your CRM or enrichment workflow.
Tips for best results
- ✅ Use company domains, not personal profile URLs.
- ✅ Include the canonical corporate domain when possible.
- ✅ Keep search fallback enabled for older websites with no footer social links.
- ✅ Filter by
status = resolvedbefore sending data to downstream automations. - ✅ Review lower-confidence
search_resultmatches before high-stakes campaigns.
Handling unresolved domains
Unresolved rows are not failures.
They mean the actor did not find safe public evidence within the configured checks.
You can:
- retry with search fallback enabled
- increase pages per domain
- manually review important accounts
- enrich the domain with another data vendor
Integrations
Common workflow patterns:
- 🧾 Upload a CSV of CRM domains and export resolved LinkedIn URLs.
- 🧱 Connect Apify dataset output to Airtable.
- 🧰 Send results to Clay, HubSpot, Pipedrive, or Salesforce via Make/Zapier.
- 🔁 Chain with another Apify actor for deeper company enrichment.
- 📊 Store evidence URLs in a data warehouse for audit trails.
API usage with Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/domain-to-linkedin-url-resolver').call({domains: ['zapier.com', 'airtable.com'],includeSearchFallback: true});console.log(run.defaultDatasetId);
API usage with Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_APIFY_TOKEN')run = client.actor('automation-lab/domain-to-linkedin-url-resolver').call(run_input={'domains': ['zapier.com', 'airtable.com'],'includeSearchFallback': True,})print(run['defaultDatasetId'])
API usage with cURL
curl -X POST "https://api.apify.com/v2/acts/automation-lab~domain-to-linkedin-url-resolver/runs?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"domains":["zapier.com","airtable.com"],"includeSearchFallback":true}'
MCP usage
Connect this actor through the hosted Apify MCP Server:
https://mcp.apify.com/?tools=automation-lab/domain-to-linkedin-url-resolver
Claude Code
$claude mcp add --transport http apify 'https://mcp.apify.com/?tools=automation-lab/domain-to-linkedin-url-resolver'
Claude Desktop
Add this remote server to your Claude Desktop MCP configuration:
{"mcpServers": {"apify-domain-resolver": {"url": "https://mcp.apify.com/?tools=automation-lab/domain-to-linkedin-url-resolver"}}}
Cursor
Open Settings → Tools & Integrations → MCP, add a custom server, and use the same mcpServers JSON configuration above.
VS Code
Open MCP: Add Server from the Command Palette, choose HTTP, and enter the actor-scoped MCP URL above. You can also save the server in your workspace MCP configuration.
Example prompts
- "Resolve these 50 company domains to LinkedIn company URLs."
- "Find LinkedIn company pages for the domains in this CSV and return unresolved rows separately."
- "Check which CRM accounts have homepage evidence for a LinkedIn company page."
Data quality notes
The actor assigns higher confidence to first-party website links than to search-result matches.
Confidence guide:
0.95: LinkedIn link found on homepage0.90: LinkedIn link found on another company-owned page0.65: LinkedIn link found through public search fallback0: no match or invalid input
Legality
This actor processes public web pages and public search-result evidence.
You are responsible for using the output in accordance with applicable laws, platform terms, and your own compliance requirements.
The actor does not access private LinkedIn data and does not require LinkedIn credentials.
FAQ and troubleshooting
Why did a known company return unresolved?
The company website may not link to LinkedIn, may block automated HTTP requests, or may use a different brand/domain. Try enabling search fallback or checking the domain manually.
Why is the confidence lower for some rows?
Search-result evidence is less authoritative than a link found directly on the company website, so it receives a lower confidence score.
Can I submit LinkedIn URLs as input?
No. Submit company domains or website URLs. LinkedIn URLs are returned as output.
Related scrapers
Use this actor with other automation-lab actors:
- https://apify.com/automation-lab/linkedin-company-scraper
- https://apify.com/automation-lab/website-emails-scraper
- https://apify.com/automation-lab/bulk-company-domain-finder
Changelog
0.2
Added force-fresh lookups, explicit cache provenance, support for protocol-relative and escaped LinkedIn links, and bounded origin fallback after connection failures.
0.1
Initial version: HTTP-only domain-to-LinkedIn company URL resolution with public website evidence, optional public search fallback, confidence scores, and unresolved-row tracking.
Data handling, dependencies, and retention
The actor uses deterministic HTTP parsing and does not use AI or send data to an AI provider. Submitted domains are requested from their public company websites and, when search fallback is enabled, included in public Bing search queries. LinkedIn is used only as the type of public URL being discovered; the actor does not log in to or request private LinkedIn data.
Run input, logs, and dataset output follow your Apify account's storage and deletion settings. To speed up repeated work, complete exact-input results are also written under a hashed key in the actor-owned named key-value store resolution-cache-v1. Each cache record contains the submitted domains, public resolution output, options, and cache timestamp. It accepts and stores no credentials. Entries are eligible for reuse for six hours; stale entries are never returned, but they are not automatically removed and the named store has no Actor-enforced expiry. forceFresh: true bypasses a reusable entry and replaces it after a complete run. Do not submit private hostnames or confidential identifiers.
To erase the cross-run cache, open Apify Console → Storage → Key-value stores, select resolution-cache-v1, and choose Actions → Delete. The authenticated API equivalent is DELETE /v2/key-value-stores/{storeId}. Delete a run's input/default dataset separately from that run's Storage tab (or with DELETE /v2/datasets/{datasetId}); deleting only the run does not delete the named cache.
Support
If you need another field or integration, open an issue on the actor page with sample input domains and the output you expected.