Job Posting Enrichment avatar

Job Posting Enrichment

Pricing

Pay per event

Go to Apify Store
Job Posting Enrichment

Job Posting Enrichment

Enrich job postings from any source with structured skills, seniority, salary, work mode, and hiring urgency analysis. Provide job data as JSON — the actor does not fetch or scrape any websites.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Enrich job postings from any source with structured skills, seniority, salary, work mode, and hiring urgency analysis. Provide job data as JSON — the actor does not fetch or scrape any websites.

What does Job Posting Enrichment do?

Job Posting Enrichment transforms raw job posting text into structured, analysis-ready data. It extracts and infers key attributes from job descriptions, including required skills, seniority level, salary range, work mode, hiring urgency, and more.

You provide job posting data (title, company, description, location) as JSON input. The actor analyzes the text and returns enriched results with structured fields. It works with job data from any source — LinkedIn, Indeed, Greenhouse, Lever, your own database, manual copy-paste, or any other job board or ATS.

This actor does not scrape or fetch any websites. All processing is done on data you provide.

Why use Job Posting Enrichment?

  • Source-agnostic — Works with job data from any job board, ATS, or database
  • No scraping — Pure text analysis, no network requests to third-party sites
  • Structured output — Skills, seniority, salary, work mode, and more as clean fields
  • Confidence scoring — Every result includes a confidence score so you know data quality
  • Batch processing — Process up to 1,000 job postings in a single run

Use cases

  • Lead generation — Identify companies hiring for specific roles and technologies to target with your products or services
  • Job market analysis — Track skill demand trends, salary ranges, and hiring patterns across industries
  • Recruitment intelligence — Enrich job listings with structured data for better candidate matching
  • Competitor hiring tracking — Monitor what roles and skills competitors are hiring for
  • Salary benchmarking — Extract and compare salary data across similar positions and locations

Input parameters

ParameterTypeRequiredDefaultDescription
jobPostingsobject[]YesJob posting data as JSON objects. Each object must have at least a description field. Optional: title, companyName, location, url
maxJobsintegerNo100Maximum number of job postings to process

Job posting object format

{
"title": "Senior Software Engineer",
"companyName": "Acme Corp",
"description": "Full job description text here...",
"location": "San Francisco, CA",
"url": "https://example.com/jobs/123"
}

Only description is required. The more fields you provide, the higher the enrichment confidence score.

Output example

Each enriched job posting produces a result like this:

{
"title": "Senior Software Engineer",
"companyName": "Acme Corp",
"location": "San Francisco, CA",
"description": "We are looking for a Senior Software Engineer...",
"jobUrl": null,
"employmentType": null,
"seniorityLevel": "senior",
"workMode": "remote",
"salaryMin": 150000,
"salaryMax": 200000,
"salaryCurrency": "USD",
"salaryPeriod": "yearly",
"skills": ["AWS", "Python", "React"],
"technologies": ["AWS", "React"],
"qualifications": ["Bachelor's degree"],
"yearsExperienceMin": 5,
"yearsExperienceMax": null,
"hiringUrgency": "high",
"companyIndustry": "Software/SaaS",
"enrichmentConfidence": 86,
"enrichedAt": "2026-03-01T12:00:00.000Z"
}

Enrichment fields explained

FieldDescriptionValues
seniorityLevelInferred seniority from title and descriptionintern, junior, mid, senior, lead, manager, director, vp, c-level
workModeWork arrangementremote, hybrid, onsite
salaryMin / salaryMaxParsed salary rangeNumeric values
salaryCurrencyCurrency of salaryUSD, EUR, GBP, etc.
salaryPeriodPay periodyearly, monthly, hourly
skillsMatched skills from a curated list of 200+Array of strings
technologiesSubset of skills — platforms, databases, frameworksArray of strings
qualificationsDetected degrees and certificationsArray of strings
yearsExperienceMin / MaxParsed experience requirementsNumeric values
hiringUrgencyUrgency signals detected in the descriptionhigh, medium, low
companyIndustryInferred industry classificationString
enrichmentConfidenceOverall data quality score0-100

How to enrich job postings with structured data

  1. Go to Job Posting Enrichment on Apify Store.
  2. Add your job posting data as JSON objects in the jobPostings field -- each object needs at least a description.
  3. Optionally set maxJobs to limit the number of postings processed.
  4. Click Start and wait for the run to finish.
  5. Download enriched results as JSON, CSV, or Excel from the Dataset tab.

How much does it cost to enrich job postings?

Job Posting Enrichment uses pay-per-event pricing:

EventPriceDescription
Actor start$0.035Charged once per run
Job enriched$0.005Charged per successfully enriched job posting

Example costs:

  • 10 jobs: $0.035 + (10 x $0.005) = $0.085
  • 100 jobs: $0.035 + (100 x $0.005) = $0.535
  • 1,000 jobs: $0.035 + (1,000 x $0.005) = $5.035

No proxy or browser costs — pure text processing.

Using the Apify API

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('automation-lab/linkedin-jobs-enrichment').call({
jobPostings: [
{
title: 'Senior Software Engineer',
companyName: 'Acme Corp',
description: 'We are looking for a Senior Software Engineer with 5+ years...',
location: 'San Francisco, CA',
},
],
maxJobs: 10,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((job) => {
console.log(`${job.title} at ${job.companyName}${job.seniorityLevel}, ${job.workMode}`);
console.log(`Skills: ${job.skills.join(', ')}`);
console.log(`Salary: ${job.salaryCurrency} ${job.salaryMin}${job.salaryMax} ${job.salaryPeriod}`);
});

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("automation-lab/linkedin-jobs-enrichment").call(run_input={
"jobPostings": [
{
"title": "Senior Software Engineer",
"companyName": "Acme Corp",
"description": "We are looking for a Senior Software Engineer with 5+ years...",
"location": "San Francisco, CA",
},
],
"maxJobs": 10,
})
for job in client.dataset(run["defaultDatasetId"]).iterate_items():
print(f"{job['title']} at {job['companyName']}{job['seniorityLevel']}, {job['workMode']}")
print(f"Skills: {', '.join(job['skills'])}")
print(f"Salary: {job['salaryCurrency']} {job['salaryMin']}{job['salaryMax']} {job['salaryPeriod']}")

Integrations

Connect Job Posting Enrichment with your recruitment and analytics tools:

  • Google Sheets — Export enriched job data to a spreadsheet for salary benchmarking and skill trend analysis
  • Zapier — Trigger alerts when jobs with specific skills or seniority levels are enriched
  • Make — Build pipelines: scrape jobs with Indeed Scraper, enrich with structured data, then push to your ATS or dashboard
  • Webhooks — Send enriched results to your own API for custom processing
  • Other Apify actors — Chain with any job scraping actor to enrich raw listings with skills, salary, and seniority data

Use with cURL

curl -X POST "https://api.apify.com/v2/acts/automation-lab~job-posting-enrichment/runs?token=YOUR_API_TOKEN&waitForFinish=120" \
-H "Content-Type: application/json" \
-d '{
"jobPostings": [
{
"title": "Senior Software Engineer",
"companyName": "Acme Corp",
"description": "We are looking for a Senior Software Engineer with 5+ years experience in Python and AWS...",
"location": "San Francisco, CA"
}
],
"maxJobs": 100
}'

Use with AI agents via MCP

Job Posting Enrichment is available as a tool for AI assistants that support the Model Context Protocol (MCP).

Setup for Claude Code

$claude mcp add --transport http apify "https://mcp.apify.com"

Setup for Claude Desktop, Cursor, or VS Code

Add this to your MCP config file:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com"
}
}
}

Example prompts

Once connected, try asking your AI assistant:

  • "Enrich these job posting URLs with structured data"
  • "Get detailed job descriptions from these LinkedIn job links"

Learn more in the Apify MCP documentation.

Tips and best practices

  • The more fields you provide in each job posting object, the higher the confidence score
  • The enrichmentConfidence score helps you filter high-quality results — scores above 70 indicate good data coverage
  • Use maxJobs to control costs when processing large batches
  • For best results, include the full job description text, not just a summary

Compliance

This actor processes only data that you provide as input. It does not scrape, fetch, or access any third-party websites. You are responsible for ensuring that you have the right to process the job posting content you supply.

FAQ

Why is the enrichment confidence score low for some jobs? Confidence depends on how much data is available in the job description. Short descriptions or those that omit salary, requirements, and skills will score lower. Providing the title, companyName, and location fields alongside the description helps the enrichment engine produce better results.

Can I chain this with job scraping actors? Yes. A common workflow is: scrape job listings with Indeed Scraper, then pass the results to Job Posting Enrichment for structured skill extraction, salary parsing, and seniority classification. Use Make or Zapier to automate the pipeline.

What skills does the actor recognize? The actor matches against a curated list of 200+ skills covering programming languages, frameworks, databases, cloud platforms, tools, and soft skills. Skills are extracted from both the title and description text.

Does this actor fetch job URLs or scrape websites? No. This actor processes only the data you provide as JSON input. It does not make any network requests to third-party websites. If you need to scrape job listings first, use Indeed Scraper or another job scraping actor.

Other lead generation tools