LinkedIn Hiring Signals — Company Hiring Intent & Velocity
Pricing
from $30.00 / 1,000 company signals
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
Maintained by CommunityActor stats
0
Bookmarked
4
Total users
1
Monthly active users
2 days ago
Last modified
Categories
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-hiringband, markedunknown (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
nullcounts and anerror, 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 —
stripeandhttps://www.linkedin.com/company/stripe/give the same company; letter case is ignored and duplicates are merged; a URL with a broken %-escape becomes anerrorrow 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 arenulland it carrieserror. - 🌍 Worldwide by default — all of the company's public jobs;
locationnarrows 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)
- Choose your companies — the slug is the part after
/company/in the LinkedIn page URL; full company page URLs work too. - Set the caps —
maxJobsPerCompany(roles read per company, default 200) andmaxResults(companies, default 500). - 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"]}}
| Field | Type | Description |
|---|---|---|
companies | array | LinkedIn 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. |
maxJobsPerCompany | integer | Roles 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. |
location | string | Count 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). |
maxResults | integer | Maximum number of companies processed (default 500; 0 = no limit). Companies beyond the cap get no row. |
includeJobs | boolean | Default on. Adds the jobs list (jobId, jobUrl, title, location, postedDate) to each row; off gives signals only. |
enrichCompany | boolean | Default on. Adds firmographics from the company page: employee figure, industry, HQ, website and domain, followers, founding year. |
includeOwnership | boolean | Default 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. |
proxyConfiguration | object | Default: 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: falseand anote, no hiring fields; - LinkedIn refused the job search —
hiringSignalsCollected: false, the hiring countsnull, no job list.
Fields LinkedIn does not show are left out of the row instead of being written as empty values.
| Field | Description |
|---|---|
companyName / companySlug / companyId | Name from the page title (falls back to the slug), the slug you gave, LinkedIn's numeric company id |
companyInput | The value you gave, on a row for a malformed company URL |
companyLinkedInUrl | https://www.linkedin.com/company/<slug> |
companyDomain / website | Host name of the website and the website as listed on the company page |
employeeCount | LinkedIn's employee figure — the "View all N employees" count of members who list the company, not the company-size band |
industry / hq / founded / followers | LinkedIn's industry label, headquarters (city, region, country), founding year, followers |
ownership | Ultimate owner — registeredEntity, companyNumber (UK), jurisdiction, ultimateBeneficialOwner, ultimateOwnerCountry, ultimateOwnerType, crossBorderOwnership, ownershipChain[], ownershipConfidence, ownershipSource; present only when an entity was identified |
hiringSignalsCollected | true 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 / openJobCountIsCapped | Roles read (up to maxJobsPerCompany); the flag is present only when the cap was reached — the counts are then lower bounds |
isHiring / hiringMomentum / momentumMeasurable | Any role found; high / medium / low / not-hiring or unknown (capped); false when the cap makes momentum unknowable |
postedLast7d / postedLast30d / postedLast90d | Roles posted in the last 7, 30 and 90 days |
newestJobDate / oldestJobDate | Posted 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 / source | Provenance per part (hiringSignals, firmographics) and LinkedIn (public) |
note | Present when the company id could not be read |
error / scrapedAt | Why 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 ApifyClientclient = 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 fromlinkedin.com/company/<slug>/. - A row with
companyInputanderror: "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: falsewith anerror— either the company id was not found on the page (the row has anote) or LinkedIn refused the job search even from fresh proxy sessions (the counts arenull; 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 hitmaxJobsPerCompanybefore 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
maxJobsPerCompanyor switch offincludeOwnership.
⚖️ Is it legal to scrape this data?
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
- 🌐 Website: data.foxlabs.com.tr
- 📧 Email: info@foxlabs.com.tr
- 🐛 Issues: open a ticket in the Actor’s Issues tab
- 🧰 More clean B2B data actors: Fox Labs on Apify
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,topLocationsand thejobslist — 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
locationcounts only one city, region or country — "United States" gives the previous scope.sources.hiringSignalsnames the location used. - Counts rise for companies that hire outside the US; with the default
maxJobsPerCompanyof 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-signalevent for each complete company row instead of the per-dataset-item event, at the same price ($0.03). Every row that carries anerrorfield — 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,
Otherfell 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,postedLast30dandpostedLast90dasnull, no job list, and anerror; 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
companyInputanderror: "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: falseand anote) now also carrieserrorand is not charged. - Output changes: new field
companyInput;errornow also marks incomplete rows; the hiring counts of a refused job search arenullinstead of numbers;topDepartmentsvalues 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), aqueryfield 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 injobs), troubleshooting built on name matching andmaxResultsPerQuery, 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".)