Job Description Normalizer — Skills, Comp, Visa avatar

Job Description Normalizer — Skills, Comp, Visa

Pricing

from $2.57 / 1,000 job-normalizeds

Go to Apify Store
Job Description Normalizer — Skills, Comp, Visa

Job Description Normalizer — Skills, Comp, Visa

Turn any job posting URL or raw text into one structured record: skills, seniority, years required, compensation range, visa sponsorship, remote type and employment type. Works across every ATS and board. Per-result pricing.

Pricing

from $2.57 / 1,000 job-normalizeds

Rating

0.0

(0)

Developer

Vitalii Bondarev

Vitalii Bondarev

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

Job Description Normalizer — Skills, Comp, Visa, Seniority

Turn any job posting — by URL or raw text — into one unified structured record, no matter which ATS or board it came from:

FieldExample
job_title, company, location"Senior Backend Engineer", "Acme", "Remote"
seniorityIntern / Junior / Mid / Senior / Lead / Principal
employment_typefull-time / part-time / contract / internship
remote_typeremote / hybrid / onsite
years_min, years_max5, null
salary_min, salary_max, salary_currency, salary_period160000, 190000, USD, annual
visa_sponsorshipyes / no / unknown
skills["Python", "Django", "PostgreSQL", "AWS"]

Why this exists

Job boards each present postings differently — salary buried in prose, skills in a bullet list, visa policy in a footnote. Feeding heterogeneous postings into a talent map, a pricing model or a candidate-matcher means normalizing them first. This actor does exactly that, horizontally, across every source. Pair it with any job scraper: scrape → normalize → analyze.

Unlike keyword-only parsers, the extraction is correctness-focused: it reads compensation ranges ($160k-$190k, £45,000–£60,000, $50/hour), visa sponsorship language, and "5+ years" experience requirements that simple keyword matchers miss.

Input

{
"jobUrls": ["https://jobs.lever.co/spotify/<id>"],
"jobTexts": ["Senior Backend Engineer. 5+ years Python… $160k-$190k. Visa sponsorship available."],
"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}
  • jobUrls — posting URLs (fetched proxy-first).
  • jobTexts — raw description text (when you already have it).
  • geminiApiKey (optional, BYO) — premium LLM extraction; never required, rule-based extraction runs by default at $0 extra cost.

Output

One record per posting with the fields above, plus parse_confidence, fields_extracted and skill_count. URLs that are JS-only or blocked degrade to low confidence rather than failing the run.

Pricing

Pay per job normalized (PPE). Runs on your Apify account — no subscription.