LinkedIn Hiring Signals — Company Hiring Intent & Velocity avatar

LinkedIn Hiring Signals — Company Hiring Intent & Velocity

Pricing

from $30.00 / 1,000 company signals

Go to Apify Store
LinkedIn Hiring Signals — Company Hiring Intent & Velocity

LinkedIn Hiring Signals — Company Hiring Intent & Velocity

Track which companies are hiring & how fast. Input companies → open-role count, hiring velocity (posted last 7/30/90 days), momentum, department & location breakdown, full job list + employer firmographics (size, industry, HQ, domain). Sales-intent, no login.

Pricing

from $30.00 / 1,000 company signals

Rating

0.0

(0)

Developer

Berkan Kaplan

Berkan Kaplan

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

1

Monthly active users

2 days ago

Last modified

Share

LinkedIn Hiring Signals — Company Hiring Intent & Velocity 📶

foXLabs LinkedIn series: Company profiles · Company 360 · Jobs · Ad tracker · Ad discovery

🎉 Turn a list of companies into hiring-intent signals from LinkedIn's public job listings — open roles, how many were posted in the last 7, 30 and 90 days, a momentum band, a rough function split, top locations, the job list and the employer's firmographics, one row per company. Built for B2B sales and go-to-market teams scoring hiring intent.

🔍 What is LinkedIn Hiring Signals — and when should you use it?

Give this Actor LinkedIn company slugs (stripe) or company page URLs (https://www.linkedin.com/company/datadog/) and it returns one hiring-signal record per company. It reads the company's public LinkedIn page to get the LinkedIn company id and firmographics, then pages through LinkedIn's public job search filtered by that id — worldwide unless you set location — no login. Every run reads the pages live.

Use it when you need: to rank accounts by hiring intent (who is hiring, how fast and where), or a per-company job list to time your outreach.

Use something else when: you want to search jobs by keyword or location across all employers (this Actor starts from companies), you need salaries or job descriptions (the job list carries title, location, posted date and URL only), or you want to find companies by name (it needs the LinkedIn slug or URL).

🤖 Use with AI agents

Already on the Apify MCP server? Ask for this Actor by name: foxlabs/linkedin-hiring-signals.

Your agent can pay for its own runs. This Actor is pay-per-event with agentic payments, so an agent can discover it, run it and settle the bill over x402 (USDC on Base) or Skyfire — no Apify account or API token of its own. Billing is the same either way: per delivered company signal — rows that only report a failed lookup are free from 25 September 2026.

Otherwise paste this into Claude, ChatGPT, Cursor or any MCP-enabled assistant:

I want company hiring signals from the Apify Actor `foxlabs/linkedin-hiring-signals`.
Input: `companies` is a list of LinkedIn company slugs or company page URLs (not free-text names). `maxJobsPerCompany` caps the roles read per company (default 200); `maxResults` caps the number of companies; `includeJobs` false drops the job list.
Start with: {"companies":["stripe","datadog"],"maxJobsPerCompany":200}
Ask me which companies to track, run the Actor, then rank them by hiringMomentum and postedLast30d.

The machine-readable API, MCP config and OpenAPI definition live at apify.com/foxlabs/linkedin-hiring-signals.md.

📋 Overview

Everything you need to turn LinkedIn job listings into company-level hiring intent — in one Actor, with no login, cookies or API key.

Why teams pick this Actor:

  • ✅ Company-first — one row per company; its roles are queried by the LinkedIn company id read from the company page.
  • 📈 Velocity and momentum — roles posted in the last 7 / 30 / 90 days and a high / medium / low / not-hiring band, marked unknown (capped) when the cap makes it unknowable.
  • 🧩 What and where — a rough function split from job-title keyword stems and the top locations, up to 8 each.
  • 📋 Job list — job id, URL, title, location and posted date for every role read (switchable).
  • 🏢 Firmographics — LinkedIn's employee figure, industry, HQ, website domain, followers and founding year from the company page.
  • 🧭 Ultimate owner (KYB) — added when an entity can be identified from the company's own legal pages or GLEIF; left out otherwise.
  • 🏷️ No false zeros — a job search LinkedIn refused gives null counts and an error, never "0 roles" or "not-hiring".
  • 💰 Pay per record — $0.03 per complete company signal, no subscription.
  • 🤖 Agent-ready — MCP + x402 agentic payments.

✨ Features

  • 🔗 Slug or URL in — stripe and https://www.linkedin.com/company/stripe/ give the same company; letter case is ignored and duplicates are merged; a URL with a broken %-escape becomes an error row instead of stopping the run.
  • 🎚️ Roles per company — maxJobsPerCompany (1–1,000, default 200); LinkedIn's public job search is paged in steps of 10 results and at most 1,000 results deep, and reading stops at the cap or at the end of the list. If LinkedIn refuses a page after 4 attempts, the row's hiring counts are null and it carries error.
  • 🌍 Worldwide by default — all of the company's public jobs; location narrows the count to one city, region or country (LinkedIn itself returns United States jobs only when no location is sent).
  • 🔢 Companies per run — maxResults (default 500, 0 = no limit) cuts the company list before any request is made.
  • 📈 Signals — openJobCount, postedLast7d / postedLast30d / postedLast90d, hiringMomentum, newestJobDate / oldestJobDate, topDepartments, topLocations.
  • 🏢 Enrichment (enrichCompany) — firmographics from the company page, on by default.
  • 🧭 Ownership (includeOwnership) — GLEIF / Companies House lookup; needs enrichment on.
  • 🔁 One proxy session per company — the company page, job search and legal pages of one company share one Apify Proxy session; a LinkedIn refusal retires it and the request is retried from a fresh one (up to 3 sessions per company and 10 new sessions per run, each logged).

🎬 Quick Start

curl -X POST "https://api.apify.com/v2/acts/foxlabs~linkedin-hiring-signals/runs?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"companies":["stripe","datadog"],"maxJobsPerCompany":200}'

🚀 Getting Started (3 steps)

  1. Choose your companies — the slug is the part after /company/ in the LinkedIn page URL; full company page URLs work too.
  2. Set the caps — maxJobsPerCompany (roles read per company, default 200) and maxResults (companies, default 500).
  3. Run and export — download the dataset as JSON, CSV, Excel, HTML or XML.

📥 Input

{"companies":["stripe","datadog"],"maxJobsPerCompany":200,"maxResults":500,"proxyConfiguration":{"useApifyProxy":true,"apifyProxyGroups":["RESIDENTIAL"]}}
FieldTypeDescription
companiesarrayLinkedIn company slugs (stripe) or company page URLs (https://www.linkedin.com/company/datadog/). A value that is neither — for example a name with spaces — is skipped without a row or log line; a company URL with a broken %-escape becomes an error row and the other companies still run. If no value is a slug or company URL, the run fails with a message.
maxJobsPerCompanyintegerRoles read per company, 1–1,000 (default 200). When a company has more, the signal is computed on this sample: openJobCountIsCapped: true and the counts are lower bounds.
locationstringCount only the company's jobs in this city, region or country — e.g. "United States", "Germany", "London". Leave empty for all of its jobs worldwide (LinkedIn itself would return United States jobs only).
maxResultsintegerMaximum number of companies processed (default 500; 0 = no limit). Companies beyond the cap get no row.
includeJobsbooleanDefault on. Adds the jobs list (jobId, jobUrl, title, location, postedDate) to each row; off gives signals only.
enrichCompanybooleanDefault on. Adds firmographics from the company page: employee figure, industry, HQ, website and domain, followers, founding year.
includeOwnershipbooleanDefault on. Ultimate-owner lookup (GLEIF, UK Companies House, the company's own legal pages); runs only when enrichCompany is on, and the block is added when an entity is identified — see the FAQ for the rule.
proxyConfigurationobjectDefault: Apify Residential proxy. All requests about one company — its page, job search and legal pages — go through one proxy session; the GLEIF and Companies House API calls do not use the proxy. When LinkedIn refuses a request (HTTP 403, 999, a 429 that survives one back-off, or an empty page), the session is retired and the request is retried from a fresh one: at most 3 sessions per company and 10 new sessions per run, each rotation logged and counted in the run's last log line. A request is tried up to 4 times.

📤 Output

One row per company. A row that could not be completed carries an error field and, from 25 September 2026, is not charged:

  • the company page could not be loaded — companySlug, error: "company page unreachable", source, scrapedAt;
  • the input was a company URL with a broken %-escape — companyInput, error: "malformed company URL (broken %-escape)", source, scrapedAt;
  • the company id was not found on the page — hiringSignalsCollected: false and a note, no hiring fields;
  • LinkedIn refused the job search — hiringSignalsCollected: false, the hiring counts null, no job list.

Fields LinkedIn does not show are left out of the row instead of being written as empty values.

FieldDescription
companyName / companySlug / companyIdName from the page title (falls back to the slug), the slug you gave, LinkedIn's numeric company id
companyInputThe value you gave, on a row for a malformed company URL
companyLinkedInUrlhttps://www.linkedin.com/company/<slug>
companyDomain / websiteHost name of the website and the website as listed on the company page
employeeCountLinkedIn's employee figure — the "View all N employees" count of members who list the company, not the company-size band
industry / hq / founded / followersLinkedIn's industry label, headquarters (city, region, country), founding year, followers
ownershipUltimate owner — registeredEntity, companyNumber (UK), jurisdiction, ultimateBeneficialOwner, ultimateOwnerCountry, ultimateOwnerType, crossBorderOwnership, ownershipChain[], ownershipConfidence, ownershipSource; present only when an entity was identified
hiringSignalsCollectedtrue when the job search was read; false when the company id could not be read (the hiring fields below are then absent) or LinkedIn refused the job search (the counts are then null) — both rows carry error
openJobCount / openJobCountIsCappedRoles read (up to maxJobsPerCompany); the flag is present only when the cap was reached — the counts are then lower bounds
isHiring / hiringMomentum / momentumMeasurableAny role found; high / medium / low / not-hiring or unknown (capped); false when the cap makes momentum unknowable
postedLast7d / postedLast30d / postedLast90dRoles posted in the last 7, 30 and 90 days
newestJobDate / oldestJobDatePosted dates of the newest and oldest role read (YYYY-MM-DD)
topDepartments[] / topLocations[]Up to 8 {name, count} each — a rough function split from job-title keyword stems (see the FAQ) and locations as LinkedIn writes them
jobs[]jobId, jobUrl, title, location, postedDate for every role read (when includeJobs is on)
sources / sourceProvenance per part (hiringSignals, firmographics) and LinkedIn (public)
notePresent when the company id could not be read
error / scrapedAtWhy the row is incomplete (see above) — such rows are not charged from 25 September 2026; ISO timestamp on every row

Sample — Stripe, captured 2026-09-24 with {"companies":["stripe"],"maxJobsPerCompany":200} (build 0.1.19, jobs worldwide; lists trimmed to two entries; the run returned 200 jobs):

{
"companyName": "Stripe",
"companySlug": "stripe",
"companyLinkedInUrl": "https://www.linkedin.com/company/stripe",
"companyId": "2135371",
"companyDomain": "stripe.com",
"employeeCount": 16597,
"industry": "Technology, Information and Internet",
"hq": "South San Francisco, California, US",
"followers": 1727019,
"website": "https://stripe.com",
"founded": 2010,
"hiringSignalsCollected": true,
"openJobCount": 200,
"openJobCountIsCapped": true,
"isHiring": true,
"hiringMomentum": "high",
"momentumMeasurable": true,
"postedLast7d": 71,
"postedLast30d": 176,
"postedLast90d": 200,
"topDepartments": [
{ "name": "Other", "count": 42 },
{ "name": "Marketing", "count": 32 }
],
"topLocations": [
{ "name": "United States", "count": 37 },
{ "name": "Toronto, Ontario, Canada", "count": 21 }
],
"newestJobDate": "2026-09-24",
"oldestJobDate": "2026-08-14",
"jobs": [
{
"jobId": "4454553315",
"jobUrl": "https://www.linkedin.com/jobs/view/4454553315",
"title": "Product Designer, Global",
"location": "Dublin, County Dublin, Ireland",
"postedDate": "2026-08-25"
},
{
"jobId": "4454550331",
"jobUrl": "https://www.linkedin.com/jobs/view/4454550331",
"title": "Commercial Counsel, EMEA",
"location": "Paris, Île-de-France, France",
"postedDate": "2026-09-07"
}
],
"sources": {
"hiringSignals": "LinkedIn public jobs (f_C, location: Worldwide)",
"firmographics": "LinkedIn company page"
},
"source": "LinkedIn (public)",
"scrapedAt": "2026-09-24T12:15:10.065Z"
}

💼 Use cases

1. Intent scoring — rank accounts by hiring. Input: your account list's LinkedIn slugs. Output: hiringMomentum, postedLast7d / postedLast30d / postedLast90d, openJobCount. Use: a prioritised call list.

2. Team expansion — spot companies hiring for the team you sell to. Input: target accounts. Output: the jobs titles, plus the rough topDepartments split. Use: filter the titles for your buyer's team and reach out with the posts as context.

3. Territory planning — see where accounts are hiring. Input: accounts in your region. Output: topLocations. Use: route each account to the rep who covers the location.

4. Weekly monitoring — schedule the same company list every week. Input: a saved company list. Output: this week's jobs and counts. Use: compare with last week's dataset and act on new roles.

🔗 Integration

JavaScript / Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('foxlabs/linkedin-hiring-signals').call({"companies":["stripe","datadog"],"maxJobsPerCompany":200});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0]);

Python

from apify_client import ApifyClient
client = ApifyClient('YOUR_TOKEN')
run = client.actor('foxlabs/linkedin-hiring-signals').call(run_input={"companies": ["stripe", "datadog"], "maxJobsPerCompany": 200})
for item in client.dataset(run['defaultDatasetId']).iterate_items():
print(item)

Automation (n8n / Zapier / Make): schedule or webhook → HTTP request to the Actor API with your companies → handle the JSON dataset → push to a sheet, CRM or dashboard.

📊 Pricing

Pay-per-event: $0.03 per delivered company signal (≈ $30 per 1,000 companies), plus Apify's run-start event ($0.00005 per GB of run memory — $0.0001 per run at 2 GB, the most this Actor allows). A row counts as delivered only when it has no error field. The price per company does not change with maxJobsPerCompany or the job list. Compute and proxy traffic are not billed to you: Apify's "Pay per event + usage" option is off for this Actor, so the Residential proxy traffic — 0.8–1.0 MB per company with the default 200 roles in our runs of 2026-09-10, roughly $6–8 per 1,000 companies at Apify's $8/GB — is paid by the developer. From 25 September 2026, rows that only report a failed lookup (error) are free. Until then Apify still counts them as dataset items. Current pricing.

❓ FAQ

Where does the data come from? From pages LinkedIn shows without logging in: the company page (linkedin.com/company/<slug>) for the company id and firmographics, and LinkedIn's public job search filtered by that id for the roles — worldwide unless you set location (without a location LinkedIn would return the company's United States jobs only; sources.hiringSignals names the location used). The ownership lookup uses the GLEIF and UK Companies House APIs and the legal pages of the company's own website (/terms, /legal, /privacy-policy, /about-us, /company-information and the home page). No login, cookies or LinkedIn API key.

Can I search by company name? No. The Actor needs the LinkedIn slug or the company page URL: stripe works because it is Stripe's slug, while a name with spaces such as Palo Alto Networks is skipped. The slug is in the page URL — linkedin.com/company/<slug>/.

How is hiring momentum decided? high when at least 5 roles were posted in the last 7 days or at least 15 in the last 30; medium when at least 5 in the last 30 days; low otherwise; not-hiring when no open role is found. When maxJobsPerCompany is reached the counts are lower bounds: a capped sample that already reaches high stays high, anything else becomes unknown (capped) with momentumMeasurable: false. With the default 200, every company in our runs reached the cap and read high.

Is a 0 a real zero? Yes. If LinkedIn refuses a job-search page even after the Actor retried from fresh proxy sessions, the row gets hiringSignalsCollected: false, null counts and no job list instead of zeros; it carries error and is not charged — run the company again.

How are functions and locations counted? Functions come from keyword stems in the job title, with one precedence rule: a function word right before "engineer…" or "architect…" names the department the role sits in — pre-sales titles ("Sales Engineer", "Sales Engineering", "Solutions Engineer / Architect", "Pre-sales Engineer") count as Sales, "Marketing Engineer" as Marketing, "Support Engineer" as Customer, "Data / ML / AI Engineer" as Data & AI and "Security Engineer" as Security; any other "…Engineer" is Engineering. Otherwise the first matching keyword wins, in this order: Engineering, Data & AI, Sales, Marketing, Product, Design, People & HR, Finance, Legal & Compliance, Customer, Operations, Security — so "Product Designer" counts as Design and "Product Marketing Manager" as Marketing. Titles that match nothing count as Other: 49 of 200 roles for Stripe in our run of 2026-09-10. Treat topDepartments as a rough split and filter the jobs titles when the function matters. Locations are LinkedIn's own strings, so one city can appear in two spellings — Datadog's list had both New York, NY and New York, United States.

What is employeeCount? The employee figure from the company page's structured data — the same number as LinkedIn's "View all N employees" link, i.e. members who list the company as their employer. It is not the company-size band: on 2026-09-10 Stripe's page showed "View all 16,882 employees" and a company size of 5,001–10,000 employees.

Why can oldestJobDate be far back? LinkedIn's job search still lists some older postings: Datadog's oldest role in our test was posted on 2024-10-07, while 199 of its 200 roles were from the last 90 days.

How is the ownership block decided? It is added whenever the lookup identifies an entity: a UK registration number on the company's own legal pages that exists in Companies House (ownershipConfidence 0.97), or a GLEIF record among the top 10 name matches that shares at least 60% of its words with the company name (0.9 when the names are equal once legal and generic words such as Inc, Ltd, GmbH or Group are removed, 0.82 otherwise). The confidence is a fixed label per method, not a probability — an equal name can still be a same-name subsidiary or a different company. ownershipSource starts with the method (domain-disclosure or gleif); the rest of that string is a fixed label, so it does not mean Companies House was consulted for that row. In our test Datadog resolved to DATADOG, INC. (US, self/listed — no parent found, 0.9) and Stripe to nothing. Treat it as a lead for KYB and confirm it in the official register.

Which rows are charged? From 25 September 2026 only complete rows. A row with error is free: the page could not be loaded, the URL was malformed, the company id was missing, or LinkedIn refused the job search. Until then Apify still charges every row as a dataset item.

Can I export to CSV / Excel / JSON? Yes — directly from the Apify dataset.

🐛 Troubleshooting

  • A company is missing from the results — the value was not a LinkedIn slug or company URL (for example it contains spaces), or it was beyond maxResults; use the slug from linkedin.com/company/<slug>/.
  • A row with companyInput and error: "malformed company URL (broken %-escape)" — fix the %-escape in that URL, or use the slug, and run it again.
  • error: "company page unreachable" — LinkedIn answered 404 (wrong slug) or the page kept failing after 4 attempts; check the slug and run it again.
  • hiringSignalsCollected: false with an error — either the company id was not found on the page (the row has a note) or LinkedIn refused the job search even from fresh proxy sessions (the counts are null; the run log shows each rotation and the last HTTP status). Run the company again; the row is not charged.
  • hiringMomentum: "unknown (capped)" — the sample hit maxJobsPerCompany before the band could be decided; raise it (up to 1,000).
  • The run takes long — every 10 roles is one more page request per company; lower maxJobsPerCompany or switch off includeOwnership.

The Actor reads pages that LinkedIn shows to logged-out visitors; it does not log in or use cookies. Check that your use fits LinkedIn's User Agreement and the law where you operate. The ownership block can contain personal data (for example a person with significant control); personal data is protected by the GDPR and similar laws, so only process it with a legitimate basis. LinkedIn is a trademark of LinkedIn Corporation; this Actor is not affiliated with, endorsed by or sponsored by LinkedIn.

🤝 Support & contact

Changelog

0.1.19 — 2026-09-24 — jobs counted worldwide (were United States only)

  • Hiring signals now cover the company's jobs worldwide. The job search was sent without a location, and LinkedIn then returns a company's United States jobs only, whatever the proxy's country (Stripe: 625 US jobs vs 942 worldwide, 2026-09-24). Every count — openJobCount, postedLast7d / postedLast30d / postedLast90d, hiringMomentum, topDepartments, topLocations and the jobs list — therefore described US hiring only. It now covers all of the company's public jobs: Stripe reads 942 roles, the same as LinkedIn's own count.
  • New optional input location counts only one city, region or country — "United States" gives the previous scope. sources.hiringSignals names the location used.
  • Counts rise for companies that hire outside the US; with the default maxJobsPerCompany of 200, big employers reach the cap (openJobCountIsCapped) sooner.
  • No pricing change.
  • Build 0.1.20 changed only the README (a fresh worldwide sample). Build 0.1.21 removes four stray log files that 0.1.20 accidentally included in the source; no code, output or pricing change.

0.1.17 — 2026-09-10 — failed lookups become free (per-record billing) + README corrected

  • From 25 September 2026 you pay only for complete company signals. From that date the Actor charges a new company-signal event for each complete company row instead of the per-dataset-item event, at the same price ($0.03). Every row that carries an error field — the company page could not be loaded, the URL was malformed, the company id was missing, or LinkedIn refused the job search — is pushed without a charge.
  • Timing: Apify applies pricing changes after a 14-day notice. The code for the switch ships in this version and detects the new pricing by itself; until 25 September 2026 billing is exactly as before.
  • Fix — proxy sessions. The session-id cleanup had lost a backslash ([^w.~] instead of [^\w.~]), so every request of a run shared one residential session (_). Each company now gets its own Apify Proxy session (c_<slug>_<hash>_<n>) for its page, job search and legal pages. When LinkedIn refuses a request (HTTP 403, 999, a 429 that survives one back-off, or an empty page), the session is retired and the request is retried from a fresh one — at most 3 sessions per company and 10 new sessions per run; every rotation is logged and the run's last log line counts them. A 403 from the company's own website is no longer retried.
  • Fix — job functions. Title keywords now match word stems, so "Product Designer" counts as Design, "Product Marketing Manager" as Marketing, "Recruiter" as People & HR, "Data Scientist" as Data & AI and "Cybersecurity" as Security. A function word right before "engineer…" or "architect…" decides the department: pre-sales titles ("Sales Engineer", "Sales Engineering", "Solutions Engineer / Architect", "Pre-sales Engineer") count as Sales, "Marketing Engineer" as Marketing, "Support Engineer" as Customer, "Data / ML / AI Engineer" as Data & AI and "Security Engineer" as Security; any other "…Engineer" is Engineering. On the same 400 real titles, Other fell from 84 to 54 (Stripe) and from 59 to 37 (Datadog), all 21 of Stripe's marketing titles now count as Marketing (before: 1), and Datadog's Sales count rose from 38 to 71.
  • Fix — a refused job search is no longer a zero. When LinkedIn refuses a job-search page after 4 attempts, the row gets hiringSignalsCollected: false, openJobCount, isHiring, hiringMomentum, postedLast7d, postedLast30d and postedLast90d as null, no job list, and an error; it is not charged. Before, refused pages were skipped, which reported fewer roles, 0 roles or "not-hiring". Every refused page is logged with its last HTTP status.
  • Fix — malformed URLs. A company URL with a broken %-escape used to stop the whole run ("URI malformed"). It now becomes one row with companyInput and error: "malformed company URL (broken %-escape)", is not charged, and the other companies still run.
  • Fix — rows without a company id. When the LinkedIn company id cannot be read from the page, the job search cannot be queried: the row (hiringSignalsCollected: false and a note) now also carries error and is not charged.
  • Output changes: new field companyInput; error now also marks incomplete rows; the hiring counts of a refused job search are null instead of numbers; topDepartments values shift as described above. No field was renamed or removed.
  • README corrected. The 2026-09-07 README documented inputs this Actor does not have (queries, maxResultsPerQuery, maxConcurrency, includeRaw) and used a placeholder example with an undefined value, while the real inputs (maxJobsPerCompany, maxResults, includeJobs, enrichCompany, includeOwnership) were missing. It also claimed name or registry-ID search (the Actor takes LinkedIn slugs or company URLs), a "registry" source with "formation / status monitoring" (the source is public LinkedIn pages), a query field on every row (there is none), "Primary industry (NACE)" (it is LinkedIn's industry label), status, legal form, formation date and registry contact fields (not in the output), that individual roles need another Actor (this one returns them in jobs), troubleshooting built on name matching and maxResultsPerQuery, and "failed lookups are never billed" (they were billed as dataset items; they are free from 25 September 2026). The README now lists the real inputs, fields, pricing and limits.

0.1 — 2026-09-07

  • Enabled AI-agent payments (x402) + rebuilt the README to the full standard (What-is / when, AI-agents + x402 agentic payments + MCP, Overview, Features, Use cases, Integration, FAQ, Troubleshooting, Support & contact).

0.0

  • Initial release: hiring signals from public LinkedIn job listings, looked up by LinkedIn company slug or URL. (Corrected 2026-09-10 — this line said "by name or registry ID".)