Curly

Free LinkedIn jobs scraper by company

Extract public LinkedIn job listings from one company, filter the records, and download structured JSON or CSV for research and data workflows.

  • One company
  • Up to 10 job records
  • JSON and CSV
  • No LinkedIn login

Structured company hiring data without manual research.

  • Structured job data

    Extract job IDs, titles, companies, locations, posting dates, public job links, and collection metadata in a consistent format.

  • Company focused scraping

    Scrape one LinkedIn company page and narrow the records by job title, keyword, location, and posting date.

  • JSON and CSV export

    Inspect records in a table or JSON view, then download the same structured data for analysis and automation.

  • No account required

    Collect publicly available job listings without providing LinkedIn cookies, credentials, or login details.

How to collect company job data for free.

Company job data can reveal where an organization is investing, which functions are expanding, and where new teams may be forming. Keeping the company fixed makes the result useful for account research, hiring signal analysis, and repeatable data workflows instead of a broad job seeker feed.

Curly collects public LinkedIn job listings for one company at a time. The free scraper accepts a LinkedIn company URL or the page name used in that URL, combines the optional filters you select, and returns up to 10 unique job records without requesting LinkedIn cookies or login details.

  1. 01

    Enter a LinkedIn company page name or URL

    Enter the page name shown after /company/ in the LinkedIn URL, such as microsoft, or paste the public page URL, such as linkedin.com/company/microsoft. Both formats are normalized before the scrape starts.

  2. 02

    Add job titles or keywords

    Enter up to three roles or keywords. Related titles such as Software Engineer, Backend Engineer, and Platform Engineer work best as separate values because the scraper checks each one independently. Press Enter or use a comma after every value.

  3. 03

    Choose one or more locations

    Add up to three cities, countries, or terms such as Remote. Leave the field empty to include every public location associated with matching jobs. When you enter several locations, each one is searched against every selected title.

  4. 04

    Select when the jobs were posted

    Use the past 24 hours for newly published listings, the past week for an active search, or the past month for a broader review. Choose any time when the company has few public listings or when a narrower date range returns nothing.

  5. 05

    Review and export the results

    The free scraper returns up to 10 unique job records across all selected filters. Open a source URL to verify the listing, switch between table and JSON views, or download the exact result set as JSON or CSV.

Control which job listings you collect.

Every selected title is combined with every selected location, and each combination becomes a separate scrape for the same company. Three titles and three locations therefore create nine filter combinations. When either field is empty, the scraper runs without that restriction.

The 10 record limit applies to the complete result for the company, not to every combination. If a listing matches more than one title or location, it is returned once. This keeps the export unique while the search fields show which filter found each record.

Start broadly when you do not yet know the company’s job title conventions. Add titles, locations, and a shorter date window one at a time after you know the baseline scrape returns public job listings.

  • Build a company hiring snapshotMicrosoft · No title · No location · Past monthStart with the company only to see which role names and locations appear in its current public listings.
  • Track a team or functionOpenAI · Product Manager, Product Lead, Product Operations · No location · Past monthGroup related titles to identify hiring activity across a function without relying on one naming convention.
  • Compare geographic demandGoogle · Data Analyst · New York, Chicago, Remote · Past weekKeep the role constant and vary location to compare where a company is recruiting for the same function.
  • Capture recent hiring signalsAmazon · UX Designer · Remote · Past 24 hoursCombine a precise role, one location, and a short date window to isolate newly published records.

Which job data fields are included.

The source is the set of jobs visible on public LinkedIn pages for the selected company. The scraper does not collect from the employer’s own career website, private listings, or jobs that require a LinkedIn session to discover. A company may therefore show different roles on its career site or to a signed in LinkedIn member.

Free scrapes use lightweight job discovery so results arrive faster. Core fields include the LinkedIn job ID and URL, title, company, location, publication date, source, collection time, and the title and location filters that found the job. Detail fields remain explicitly unavailable rather than being inferred.

Each export is a snapshot of public data at collection time, not proof that a vacancy remains open or that hiring activity will lead to headcount growth. Keep the source URL with the record so a person or downstream workflow can verify the current listing.

Troubleshoot an empty company scrape.

  • Confirm that the input is a LinkedIn company page or the short name shown after /company/ in its URL, not a personal profile or job URL.
  • Run the company without a title or location first. This reveals whether public job records are available before filters are applied.
  • Try related title names separately. Employers may use Backend Engineer where another company uses Software Engineer.
  • Remove the location filter or widen the posting date when a precise search returns no matches.
  • Open the source URL before using a record. Public listings can close or change after the data was collected.

Export job records as JSON or CSV.

Choose JSON when the result will be read by code or when nested objects must stay intact. Choose CSV when you want to sort, filter, annotate, or share a shortlist in a spreadsheet. Both downloads contain the same records shown on the page.

Use job_id as the key when you compare several exports because titles and locations can change while the LinkedIn job ID identifies the listing. published_at describes when the job was posted, while scraped_at records when the public data was collected. search_keyword and search_location explain which filters produced the match.

The free response keeps the complete field structure even when detail enrichment is disabled. details_status and full_details make the difference explicit, so an integration can distinguish a value that was not requested from a value that was requested but unavailable.

{
  "job_id": "4250000000",
  "job_url": "https://www.linkedin.com/jobs/view/4250000000",
  "title": "Software Engineer",
  "company_name": "Example Company",
  "company_slug": "example-company",
  "location": "Germany",
  "published_at": "2026-07-30",
  "search_keyword": "Software Engineer",
  "search_location": "Germany",
  "details_status": "not_requested",
  "scraped_at": "2026-07-30T10:30:00.000Z",
  "full_details": {
    "included": false,
    "available_on_apify": true
  }
}

Use company hiring data in sales and GTM workflows.

A job listing becomes more useful as a business signal when the record includes enough context to trace it back to a company, function, location, and publication date. The free scraper preserves those fields so a researcher can qualify the signal before it enters an account list or automated workflow.

  • Prioritize accounts when new roles indicate investment in a team, function, or market that matches your offer.
  • Give sales and GTM research more context with the exact titles, locations, dates, and source URLs behind a hiring signal.
  • Compare repeated exports by job ID to identify newly published listings and remove records that were already reviewed.
  • Feed clean JSON into a data pipeline or use CSV for manual analysis, qualification, and spreadsheet based reporting.

Treat a single listing as directional evidence, not a complete hiring forecast. Stronger signals come from comparing multiple collection dates and confirming important records at their original source before acting on them.

Free single company scraper versus the bulk Apify scraper.

Use the free tool for an on demand extraction from one company. Move to the Curly LinkedIn Jobs Scraper on Apify when a workflow needs several companies, more results, larger title and location lists, enriched job pages, schedules, or webhooks.

CapabilityFree toolApify scraper
Companies per searchOne companyUp to 100 companies
Result limitUp to 10 jobsUp to 100 jobs per company
Titles and locationsUp to 3 of eachUp to 10 of each
Search combinationsUp to 9Up to 100 per run
LinkedIn loginNot requiredNot required
JSON and CSVIncludedIncluded
Full job detailsLightweight resultsEnriched when publicly available
Schedules and integrationsNot includedSchedules, webhooks, and integrations

Need more companies, records, or automation?

Run the Curly scraper on Apify to collect full job details, process up to 100 companies, increase result limits, schedule runs, and connect the data to other applications.

Run Bulk Scraper on Apify

Common questions about the free tool.