LinkedIn Company 360 — Firmographics + Hiring + Ads Fused
Pricing
from $70.00 / 1,000 results
LinkedIn Company 360 — Firmographics + Hiring + Ads Fused
One record per company fusing LinkedIn firmographics + live hiring signals (open roles, velocity, departments) + active advertising (ad count, formats, creatives) — entity-resolved by domain, provenance-tagged. The 360° company view no single-surface scraper gives. No login.
Pricing
from $70.00 / 1,000 results
Rating
0.0
(0)
Developer
Berkan Kaplan
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 days ago
Last modified
Categories
Share
LinkedIn Company 360 — Firmographics + Hiring + Ads, Fused
Every other LinkedIn scraper gives you one surface. This returns the whole company — its firmographics, whether it's scaling (live hiring), and whether it's in-market (active advertising) — fused into one domain-keyed, provenance-tagged record, with no login and no cookies.
- 🏢 Firmographics — size, industry, HQ, followers, website, founded, description
- 📈 Live hiring signal — open-role count, velocity (7d/30d), momentum, top departments
- 📣 Advertising signal — is it advertising, ad count, formats, sample creatives (LinkedIn Ad Library)
- 🔗 One fused record per company — entity-keyed by domain, every part tagged with its source
Quick start (API)
Get a full 360° record for two companies in one call:
curl -X POST "https://api.apify.com/v2/acts/foxlabs~linkedin-company-360/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{ "companies": ["stripe", "https://www.linkedin.com/company/datadog/"], "includeHiring": true, "includeAdvertising": true }'
Prefer no code? Open the Input tab, paste your company URLs or slugs, toggle the signals you want, and click Start — then download the results.
What you get
One clean, flat record per company:
| Field | Type | Description |
|---|---|---|
companyName | string | Company name as shown on LinkedIn |
companySlug | string | LinkedIn company slug (e.g. stripe) |
companyId | string | LinkedIn numeric organization id (used to resolve hiring & ads; absent if unresolved) |
companyLinkedInUrl | string | Canonical company page URL |
domain | string | Website domain — the entity key used to fuse signals |
employeeCount | number | Employee count from LinkedIn |
industry | string | Industry / sector |
hq | string | Headquarters (city, region, country) |
followers | number | LinkedIn follower count |
website | string | Company website URL |
founded | number | Founding year |
description | string | Company "About" description |
hiring | object | Fused hiring signal — see below (present when hiring is enabled and the company id resolves) |
advertising | object | Fused advertising signal — see below |
signalSummary | string | One-line human read, e.g. hiring (high, 200 roles) · advertising (24 ads) |
sources | object | Provenance string for each fused part (firmographics, hiring, advertising) |
note | string | Present only when the LinkedIn company id could not be resolved (firmographics only) |
scrapedAt | string | ISO 8601 timestamp of the run |
error | string | Present only on an unreachable company page; that record carries just companySlug, error, scrapedAt |
hiring object:
| Field | Type | Description |
|---|---|---|
openJobCount | number | Distinct open roles found (capped at 200 per company) |
openJobCountIsCapped | boolean | Present and true only when the 200-role cap was hit |
isHiring | boolean | Whether any open roles were found |
hiringMomentum | string | high / medium / low / not-hiring, from recent posting velocity |
postedLast7d | number | Roles posted in the last 7 days |
postedLast30d | number | Roles posted in the last 30 days |
topDepartments | array | Up to 6 { name, count } — e.g. Engineering, Sales, Data & AI, Marketing, Product |
advertising object:
| Field | Type | Description |
|---|---|---|
isAdvertising | boolean | Whether any active ads were found in the LinkedIn Ad Library |
activeAdCount | number | Distinct active ads found (capped at 60 per company) |
activeAdCountIsCapped | boolean | Present and true only when the 60-ad cap was hit |
adFormats | array | { format, count } where format is image or video, tallied from a sample of the ads |
sampleAdCreatives | array | Up to 3 short ad-copy snippets (≤140 chars each) |
adFormatsandsampleAdCreativesare drawn from a sample of up to 12 ad detail pages, so their counts can be lower thanactiveAdCount— they characterise the advertising, not enumerate every ad.
Sample output
Illustrative record (field shapes are real; values are for illustration):
{"companyName": "Datadog","companySlug": "datadog","companyId": "1035334","companyLinkedInUrl": "https://www.linkedin.com/company/datadog","domain": "datadoghq.com","employeeCount": 7000,"industry": "Software Development","hq": "New York, New York, United States","followers": 512340,"website": "https://www.datadoghq.com","founded": 2010,"description": "The observability and security platform for cloud applications.","hiring": {"openJobCount": 200,"openJobCountIsCapped": true,"isHiring": true,"hiringMomentum": "high","postedLast7d": 18,"postedLast30d": 63,"topDepartments": [{ "name": "Engineering", "count": 74 },{ "name": "Sales", "count": 38 },{ "name": "Data & AI", "count": 21 }]},"advertising": {"isAdvertising": true,"activeAdCount": 24,"adFormats": [{ "format": "image", "count": 7 },{ "format": "video", "count": 3 }],"sampleAdCreatives": ["See how leading teams cut MTTR with unified observability across metrics, traces and logs.","Watch your whole stack in one place — start a 14-day free trial."]},"signalSummary": "hiring (high, 200 roles) · advertising (24 ads)","sources": {"firmographics": "LinkedIn company page","hiring": "LinkedIn public jobs (f_C)","advertising": "LinkedIn Ad Library (public)"},"scrapedAt": "2026-07-05T09:12:44.031Z"}
Input & filters
This is an enrichment Actor: you supply the companies, it returns one fused record for each. It does not discover or search for companies — pair it with a discovery source (or a LinkedIn search Actor) to build the list.
- Companies (required) — a list of LinkedIn company URLs or bare slugs, e.g.
stripe,https://www.linkedin.com/company/datadog/. Duplicates and unparseable entries are dropped. - Include hiring signals (default on) — fuse open-role count, 7d/30d velocity, momentum and department breakdown.
- Include advertising signals (default on) — fuse Ad Library activity: is-advertising, ad count, formats, sample creatives.
- Proxy (default Residential) — LinkedIn rate-limits and blocks datacenter/un-proxied traffic, so residential is strongly recommended.
Turning a signal off makes runs faster and cheaper when you only need part of the 360.
Example inputs (copy & paste)
// 1) Full 360 on a target-account list — firmographics + hiring + ads{ "companies": ["stripe", "datadog", "https://www.linkedin.com/company/notion/"],"includeHiring": true, "includeAdvertising": true }// 2) Recruiting focus — firmographics + hiring only (skip ads — faster){ "companies": ["figma", "canva"], "includeHiring": true, "includeAdvertising": false }// 3) ABM / in-market — advertising signals only (skip hiring){ "companies": ["hubspot", "salesforce"], "includeHiring": false, "includeAdvertising": true }// 4) Pure firmographics enrichment — both signals off (fastest){ "companies": ["openai", "anthropic"], "includeHiring": false, "includeAdvertising": false }// 5) Full 360 via exact LinkedIn URLs — dodge namesake slugs{ "companies": ["https://www.linkedin.com/company/stripe/", "https://www.linkedin.com/company/datadog/"],"includeHiring": true, "includeAdvertising": true }
Use cases
- Account prioritisation. Score a target list by size × hiring momentum × ad activity.
signalSummaryanswers "is this account worth a call?" in one line — growing, in-market, or quiet — so reps work the live accounts first. - Competitive & market monitoring. Schedule the same company list on a cadence and watch one record move as a rival ramps hiring or spins up ad campaigns — an early read on expansion and go-to-market pushes.
- CRM enrichment. Feed a list of company URLs or slugs → append current firmographics (size, industry, HQ, website, followers) plus hiring and advertising signals to records you already own.
- Recruiting & talent intelligence.
hiringMomentum+topDepartmentsshow who is scaling and where (Engineering vs. Sales vs. Data & AI) — target agencies, candidates and partnerships at companies that are actually hiring. - ABM / in-market detection.
isAdvertisingandactiveAdCountflag companies actively spending on LinkedIn — a buying-intent signal for ABM plays and timing. - Investment & competitor research. Combine firmographics with hiring velocity and ad presence to gauge a company's momentum and commercial activity across a sector.
Performance & throughput
Companies are processed a few at a time. For each one the Actor fetches the public company page (firmographics), then — if enabled — pages the public guest-jobs endpoint for open roles (capped at 200, in pages of 10) and fans the LinkedIn Ad Library out across country facets before pulling a sample of ad detail pages. All fetches go through a residential proxy with automatic retry/back-off on rate-limit responses.
Actual wall-clock time depends on your Apify plan, proxy latency and LinkedIn throttling, so it isn't fixed. Two levers control it directly: turn off includeAdvertising (the ad fan-out is the heaviest step) and/or includeHiring when you only need firmographics.
Integrations
JavaScript (apify-client):
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('foxlabs/linkedin-company-360').call({companies: ['stripe', 'datadog'], includeHiring: true, includeAdvertising: true,});const { items } = await client.dataset(run.defaultDatasetId).listItems();
Python (apify-client):
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("foxlabs/linkedin-company-360").call(run_input={"companies": ["stripe", "datadog"], "includeHiring": True, "includeAdvertising": True,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["companyName"], item.get("signalSummary"))
Also works with Make / n8n / Zapier (Apify app → run this Actor, map the input), scheduled runs, webhooks, and the Apify MCP server so AI agents can call it as a tool.
Data quality
Firmographics are read from the public data LinkedIn embeds on each company page. Name and description are almost always present; employeeCount, industry, hq, followers, website and founded depend on what the company itself publishes. Fields LinkedIn doesn't expose are omitted from the record — never guessed or fabricated.
Hiring and advertising signals require the company's LinkedIn organization id to resolve from its page. When it can't, you still get firmographics plus a note explaining why. Hiring counts come from the public guest-jobs listing and advertising from the public Ad Library, each tagged in sources. Because these numbers reflect what LinkedIn exposes at run time (and are capped — see the field tables), treat them as strong directional signals rather than an exhaustive census.
Pricing
Pay per result — you're billed per company record returned; firmographics, hiring and advertising are gathered in a single pass per company. There's an Apify free tier to evaluate the full feature set before you scale. See the Pricing tab on the Actor for current rates.
FAQ
Do I need a LinkedIn login or cookies? No. The Actor reads only publicly visible pages and endpoints — it's cookieless and never signs in.
Does LinkedIn have an official company API for this? No public one. This Actor accesses public surfaces: the company page, the public guest-jobs listing, and the public LinkedIn Ad Library. See the legal note below.
Can it discover or search for companies? No — it enriches the companies you provide. Give it URLs or slugs and it returns one fused record each. Build the list with your CRM or a LinkedIn search/discovery Actor.
A slug returned the wrong company — why? A bare slug for a common name can match a namesake. Pass the exact https://www.linkedin.com/company/… URL, and verify the returned domain matches the company you meant.
Why do some records have no companyId, hiring or advertising? If the organization id can't be resolved from the page, you get firmographics only and a note field explains it. Both hiring and advertising need that id.
How many roles and ads can it return? Hiring is capped at 200 roles per company (openJobCountIsCapped flags it); advertising at 60 ads (activeAdCountIsCapped), with formats and sample creatives drawn from up to 12 of them.
How fresh is the data? Live — every run fetches the current pages. Schedule it to track accounts over time.
What export formats are available? JSON, CSV, Excel, or via the Apify API and integrations.
Which proxy should I use? Residential (the default). LinkedIn blocks datacenter and un-proxied traffic.
Can I turn the signals off? Yes — includeHiring and includeAdvertising. Off means faster, cheaper, firmographics-only runs.
Troubleshooting
- A record shows
error: "company page unreachable". LinkedIn rate-limited or blocked that fetch even after retries. Keep the residential proxy and re-run — LinkedIn throttles bursts, so smaller batches and spacing help. - A record has firmographics only + a
note. The organization id didn't resolve from the page. Pass the exact company URL instead of a bare slug and re-run. hiring/advertisingmissing though enabled. EithercompanyIddidn't resolve, or the company genuinely isn't hiring/advertising (isHiring/isAdvertisingwould befalse). It's the signal, not a miss.- Runs feel slow. The ad fan-out (country facets + detail pages) is the heaviest step. Set
includeAdvertising: falsefor fast firmographics-and-hiring pulls.
Notes, limits & legal (honest)
- Public data only. Every signal comes from publicly visible LinkedIn surfaces (company page, public guest-jobs listing, public Ad Library). The Actor is cookieless and never logs in, and it collects no personal profiles — hiring and advertising signals are company-level.
- No official API; your responsibility. LinkedIn provides no public API for this data, and its User Agreement restricts automated collection. This Actor only accesses publicly available information, but you are responsible for your own use and for complying with LinkedIn's terms and applicable law. Use it for legitimate B2B, recruiting and research.
- Not affiliated with, endorsed by, or sponsored by LinkedIn Corporation. "LinkedIn" is a trademark of its owner.
- Namesake risk. A bare slug for a common name can resolve to a different company — verify via the returned
domain, or pass the exact LinkedIn URL. - Caps & scope. Hiring is capped at 200 roles and advertising at 60 ads per company (formats/creatives from up to 12 sampled ads). Deep ad analytics (EU/DSA impressions & targeting) are out of scope — see the dedicated LinkedIn Ad Tracker. Revenue, funding and Glassdoor culture data come from other foXLabs Actors and can be layered on by domain.
- Never fabricated. Fields LinkedIn doesn't expose are omitted from the record, not guessed.
Support
Questions, a field you'd like added, or a custom build? Open the Issues tab on this Actor, or email info@foxlabs.com.tr. We reply fast.
If this Actor saves you time, a ⭐ review really helps.
Changelog
0.2 — 2026-07-05
- Reworked docs: API quick-start, full field tables (with
hiring/advertisingobjects), illustrative sample output, example recipes, integration snippets (JS/Python/Make/MCP), FAQ, troubleshooting and honest legal notes.
0.1
- Initial release. Domain-keyed fusion of firmographics + live hiring signals + active advertising into one record per company, with a one-line signal summary and provenance. Cookieless, no login.
Part of the foXLabs data platform — public-data company, contact, jobs, ads, procurement & AI-search intelligence scrapers. Browse the full suite at data.foxlabs.com.tr.
