TwoSec

Early access

US Jobs Feed

Every new US job listed on LinkedIn, with the full job posting, in your systems within minutes of being listed. Built for job boards, job-search apps and hiring-data teams. Flat monthly price, no per-job fees.

The feed is in early access. The collection runs today, and a sample of 100 real jobs with full details is available now. Customer delivery (files and API) goes live about two weeks after you sign up. In those two weeks we set up your plan's delivery with you, including hourly files, the webhook, open or closed status, parsed pay and your archive.

What's in each job

One row per job, deduplicated by LinkedIn job ID, so a job shows up once. Rows follow a versioned schema, linkedin-us-jobs/1. JSONL carries every field; CSV carries every field except description_html.

FieldWhat it holds
job_id, urlLinkedIn job ID and the public job link
title, company, company_urlAs listed
location, stateLocation as listed. state is the two-letter code when the location names one state (Austin, TX, Texas, United States, Greater Houston); otherwise it repeats the location, such as United States
posted_dateThe date LinkedIn shows for the job
listed_at_approxWhen LinkedIn listed the job, to the minute for new jobs
first_seen_atWhen the job entered our feed (UTC)
description_text, description_htmlThe full job posting, including pay when the employer states it
seniority, employment_type, job_function, industriesLinkedIn's job criteria from the job page
applicants_text, applicants_countThe applicant count LinkedIn shows
details_statusok when the job page was read; missing when the job was taken down first or its page couldn't be read (the job-page fields are then empty)
salary_card, badgePay shown on the listing card, which is rare (pay usually sits in the description); badge is reserved and empty for now

For Live and Scale plans, we also set up an open or closed status for each job, re-checked daily, as part of your delivery.

One row in the feed format, description shortened

{
  "job_id": "4472402576",
  "url": "https://www.linkedin.com/jobs/view/full-stack-developer-python-react-js-at-opendatajobs-4472402576",
  "title": "Full Stack Developer (Python, React.js)",
  "company": "OPENDataJobs",
  "company_url": "https://www.linkedin.com/company/opendatajobs",
  "location": "Washington, DC",
  "state": "DC",
  "posted_date": "2026-09-26",
  "listed_at_approx": "2026-09-26T19:47:28+00:00",
  "first_seen_at": "2026-09-26T19:49:28+00:00",
  "badge": null,
  "salary_card": null,
  "seniority": "Associate",
  "employment_type": "Full-time",
  "job_function": "Engineering",
  "industries": "IT Services and IT Consulting",
  "applicants_text": "Be among the first 25 applicants",
  "applicants_count": 25,
  "description_text": "About Peregrine Peregrine Advisors is a rapidly growing AI and data innovation hub ... This is a full-time W-2 position with a salary of $120,000 to $140,000 per year. ...",
  "description_html": "<div class=\"show-more-less-html__markup ...\">...</div>",
  "details_status": "ok"
}

Freshness and coverage

The collector reads every new US listing every one to five minutes, more often when more jobs are being listed. Then it reads each job's page (description, criteria, applicants) for your plan. The API hands out a job once its page is read. If a page can't be read within two hours, the job is delivered anyway, marked details_status: missing.

What we measured on the production feed, on the evening of Saturday 26 September 2026 (US time):

One check is one check, so we'll keep measuring: once your delivery starts, we check coverage every day against an independent sample and send you the number every week.

Delivery

The pull API and the daily files are built. Hourly files and the webhook are set up with you after you sign up.

OptionHow it works
Pull APIGET /feed/linkedin/jobs?since= returns the jobs added since your last cursor, up to 1,000 a call, with a next_cursor for the next call. Your key goes in the Authorization header. Your plan can narrow the feed to states, keywords in the title or company name, or title terms.
Daily filesOne gzipped JSONL and one gzipped CSV file per UTC day, each listed with its row count and SHA-256 checksum at GET /feed/linkedin/exports. A day's files are ready within two and a half hours after midnight UTC and kept for 14 days.
Hourly filesJSONL and CSV, gzipped, one file per hour, pushed to your S3 or Google Cloud Storage bucket.
WebhookWe POST batches of new jobs to your endpoint every few minutes (Scale plan).

Plans

Every plan includes all new US jobs with full job pages and no per-job caps. Prices are per month, billed monthly, and you can cancel any time. Pay a year up front and get two months free.

HourlyLiveScale
Price per month$500$900$1,500
Hourly filesYesYesYes
Pull API with filters–YesYes
Webhook push––Yes
Open or closed status–DailyDaily
Rolling archive30 days90 days12 months
Parsed pay range––Yes
Show jobs on your customers' sites (backfill, resale)––Yes
Support reply1 business day1 business daySame business day

Need other countries, delivery to a warehouse (Snowflake, BigQuery) or several brands on one contract? Ask for a custom plan.

What we commit to

What's not included

Sample data

100 real US jobs with their full job pages, in the same format the feed delivers:

The sample is public, so email addresses, phone numbers, personal LinkedIn profile links and the names of contact people inside its descriptions are masked. The feed delivers descriptions as posted.

Want a sample for your niche? Tell us your use and the job types you care about, and we'll pull one from the last 24 hours.

Questions

Where does the data come from?

Public LinkedIn job listings, the same pages any logged-out visitor sees. No accounts, no member profiles.

How do you measure coverage?

After the feed has run past a time window, a separate search, independent of the feed, finds recent jobs in a few states. Coverage is the share of those jobs the feed already holds.

Can we try it before we pay?

Yes. Start with the sample, then take the one-week free trial once your delivery is set up.