Build and enrich LinkedIn lead lists without login or cookies — search for decision-makers by company & job title, or paste profile/company URLs in bulk. Get name, headline, experience, education, followers, company size, industry and 70+ fields per record.
All notable changes to the LinkedIn Profile Scraper are documented here.
The format follows Keep a Changelog .
[0.0.26] - 2026-07-06
Changed
Every "Upgrade" link in run messages now says what's behind it: paid plans start at $29/mo with $29 in platform credits, and the link opens your plan page in Apify Console.
[0.0.25] - 2026-07-06
Fixed
The "Upgrade" link in run summaries now opens your Apify plan page directly (the old link form could land on the wrong billing tab).
[0.0.24] - 2026-07-01
Added
"Example tasks" section in the README — three ready-to-run templates (scrape profiles by URL, scrape company data, find leads by company & job title) you can open and run in one click.
Clearer in-form guidance for the search modes — the Job title (Mode 3) and Company keywords (Mode 4) fields now carry a short tip on how broad to go, so a search returns results on the first try instead of coming back empty.
New FAQ entries — whether you need your own LinkedIn account, cookies, or login (you don't), and how to bulk-enrich a large list of profile URLs.
Changed
Store title and description now spell out bulk lookups, company data, and that no login or cookies are required.
Docs correction — the Tips section previously said Mode 3 search waits up to 60s; it now reflects the current behaviour (slow searches are waited out for several minutes, and a search with no matches ends in seconds).
No change to pricing, modes, run behaviour, or output schema.
[0.0.23] - 2026-07-01
Added
Free runs now tell you exactly how much more was available. When a run on the free plan matches more than the 50-item free ceiling, it shows a clear message: how many results were matched in total, that the first 50 are already in your dataset, and how many more are waiting — plus a one-click way to get the full set by re-running the same input on a paid plan. Previously the extra results were left out silently.
[0.0.22] - 2026-05-25
Fixed
A search with no matches now ends in seconds with the no-results message — when Search Leads or Search Companies returned zero results, the run used to keep waiting on the search service and, after several minutes, finish with a misleading "search did not finish in time — please re-run shortly". It now recognises a completed empty search right away and shows the clear no-results guidance (with the best ways to broaden your search). Empty results are still not charged.
[0.0.20] - 2026-05-21
Added
Helpful message when a search returns no results — if Search Leads or Search Companies finds nothing, the run now explains the likely cause and the best fixes (broaden or remove the job title, simplify keywords, drop the industry filter, try larger companies) instead of finishing silently with an empty dataset. Empty results are not charged.
[0.0.19] - 2026-05-21
Fixed
Country filter dropped every result — selecting a country (e.g. "United States") in countryFilter previously matched nothing and returned an empty dataset, because the filter compared the full country name against LinkedIn's two-letter country codes. The filter now matches the country code correctly across all four modes.
Keyword company / lead search returned empty when the search service was slow — the company (searchCompany) and lead (searchLead) searches run asynchronously and can take longer than usual. The Actor now waits substantially longer (with progress logged) and, if the search still hasn't finished, ends with a clear "please re-run shortly" message instead of silently reporting zero results. Empty results from a slow search are not charged.
[0.0.18] - 2026-05-18
Added
"Filters dropped every result" notice — when every fetched row gets removed by your advanced-filter settings, the run now writes a USER_MESSAGE explaining what happened plus a one-line hint on which knob to relax first (lower maxFollowers, drop countryFilter / industryFilter, or set mustHaveEmail / mustHavePhone to false). Most useful in Mode 3 (searchLead), where it's easy to combine maxFollowers + countryFilter against senior decision-makers and end up with 0 saved rows.
Paid-plan welcome message — first paid run now lists the three things the free plan blocked: running all 4 operation modes without per-mode item caps, applying the full advanced-filter suite, and scheduling daily Apify Task runs with your own input. Replaces the prior placeholder line.
Changed
Cleaner stop-reason classification — clean runs that finish without any matching results are now labeled as completed runs (with zero results) rather than as "unknown" in the run summary and status banner, making it easier to tell "ran fine, nothing matched your input" apart from real errors.
[0.0.16] - 2026-05-11
Changed
README — Dropped the standalone Choose your mode (84 lines, 4 sub-sections with per-mode JSON examples) and How to use it (6 lines) H2 sections. The 4 operation modes (Lookup Profile by URL / Lookup Company / Search Leads / Search Companies) are now summarized in a compact 4-row table at the top of What it does. Trims 84 lines and 4 sub-sections; same input, output, and pricing.
[0.0.13] - 2026-05-09
Changed
Customer-facing run logs — fetch operations now log Fetching profile data for <slug>…, Fetching company data for <key>…, Searching decision-makers at <company>…, Searching companies for "<keywords>"…. Per-request HTTP details (status, elapsed, response size) demoted from info to debug level so the run log stays focused on the work being done.
Cleaner Input UI — removed the "Try it for free" demo-fallback advertising from input schema descriptions (top-level + 4 per-mode sectionDescription fields). Demo run still triggers silently on empty input + shows the loud ⚠️ TEST RUN banner in logs.
Empty image cells — when a profile has no avatar or a company has no logo, the cell now renders empty in the Apify Console output preview. Previously the column showed a "broken image" proxied placeholder. Internally profile_image_url / company_logo_url / logo_url now emit null (not the "N/A" sentinel) and dataset_schema declares them as ["string", "null"].
Added
Country & industry filter dropdowns — countryFilter is now a searchable single-select dropdown backed by the canonical ISO-3166 country name list (198 entries). industryFilter is a single-select dropdown and Mode 4 searchCompanyIndustries is a multi-select dropdown — both backed by the 434-entry canonical LinkedIn Industry Codes V2 taxonomy. Free-text input is no longer required for either filter.
Live status page redesign — aligned with the rest of our scraper family: Inter font, 5-second auto-refresh, badge-dot pulse animation on the running state, distinct completed-paid / completed-free banners with review and upgrade CTAs. The /api/status JSON gained 4 progress counters (skippedPrivate, skippedErrors, mediaFetchFailed, goodQuality) and a cost.budget field. Two new endpoints — POST /api/client-info (capture viewer device/timezone/locale) and GET /track (analytics click redirect) — round out the contract.
Backwards compatibility
Legacy free-text countryFilter values from existing tasks: tasks load with the dropdown defaulting to (no filter) if the saved value isn't one of the new enum entries — re-pick the country to lock in the dropdown choice. The post-fetch substring filter still works for any value that does match.
Legacy free-text industryFilter values: tasks load with the dropdown defaulting to (no filter) if the saved value isn't one of the canonical taxonomy names — re-pick the industry to lock it in. Post-fetch substring filter still honors any free-text value left from old tasks.
searchCompanyIndustries is now restricted to canonical taxonomy values via items.enum. Existing tasks with non-canonical free-text values may need to be re-saved with the dropdown picker.
All v0.0.12 dataset shape guarantees (entity-aware fields, no aliases) are preserved.
[0.0.12] - 2026-05-08
Changed
Cleaner output rows — each row now carries only the field set that matches its entity_type. Profile rows expose ~44 profile fields; company rows expose ~26 company fields. Previously every row was padded to the union of both schemas with "N/A" filler in the irrelevant half.
No more duplicated columns — upstream aliases (industry ↔ industries, company_domain ↔ domain, company_logo_url ↔ logo_url, company_employee_count ↔ employee_count, company_employee_range ↔ employee_range, company_year_founded ↔ year_founded, company_website ↔ website, company_linkedin_url ↔ linkedin_url) are collapsed to a single canonical column.
Backwards compatibility
Profile-only fields (first_name, headline, educations, experiences, school, is_premium, etc.) are no longer present on company rows. If your downstream consumer iterated those keys expecting "N/A", switch on row.entity_type === 'company' first. Same applies in the other direction (affiliated_companies, funding_info, specialties, tagline were never meaningful on profile rows).
[0.0.11] - 2026-05-08
Changed
Cleaner Input UI — example URLs removed from field defaults; Apify Console now shows fields empty by default with example URLs displayed as ghost-text placeholders only.
Cost-control caps moved inside each mode's section — no separate "Cost control" subsection. Apify Console Input tab now renders 5 fold-out sections (4 🎯 mode sections + 1 🔬 Advanced filtering), down from 9.
Mode section emoji unified — every mode sectionCaption now uses 🎯 (was 🎯/🏢/🔍/🏭).
Added
Test-run on empty input — clicking Save & Start without filling any field now triggers a built-in demo run (capped at 10 items) instead of failing with Input Error. A loud ⚠️ TEST RUN banner is logged so you know it's not running on your data.
USER_MESSAGE demo hint — when a test run fires, the run's KVS gets a demo_run_v1 user-message explaining the cap and how to switch to your own data.
Backwards compatibility
Existing tasks with explicit input continue to work unchanged. Tasks that relied on the old "satyanadella" / "microsoft" prefill values being auto-filled by the schema will now see the demo seed injected by the actor code instead — same effective behavior.
[0.0.10] - 2026-05-08
Added
Mode 3: Search Leads — find decision-makers at given target companies, with optional job-title filter (e.g. "engineering manager" at Microsoft + Anthropic).
Mode 4: Search Companies — keyword search across the LinkedIn company graph, optionally narrowed to specific industries.
Live status web server — auto-refreshing HTML status page during runs, plus /api/status JSON endpoint and /api/health for programmatic monitoring.
Per-mode cost control — separate maxItemsModeN field per mode (Mode 1: maxItemsMode1, etc.) replaces the old single global cap.
Output table thumbnails — Profile photo + Company logo columns now render as image thumbnails in the Apify Console output preview (profile_image_url, company_logo_url, logo_url formatted as images).
README restructured to 18-section layout — opens with value prop instead of pricing; per-mode cost control inline; Related Actors table added; Filter recipes section added.
Default input prefills kept (so test runs work) but default: [] set explicitly so production runs respect input.