Jobs Companies Talents Pricing
en
en English
ar العربية
de Deutsch
es Español
fr Français
it Italiano
pt Português
ru Русский
zh 官话
Sign In Get Started
Jobs
Companies
Talents
Pricing
Sign In
Get Started
Language
en ar de es fr it pt ru zh
Partner API

Alion vacancies as JSON

One request returns vacancies with their company, filtered like alion.io/jobs.

1. Get a key

Create it in Settings → Security → API keys. For a higher limit, write to [email protected].

2. Request vacancies

curl -H "Authorization: Bearer alion_YOUR_KEY" \
  "https://alion.io/api/job.getList"
{
  "success": true,
  "response": {
    "items": [
      {
        "id": 1048040,
        "url": "https://alion.io/job/openai-senior-backend-engineer-go",
        "title": "Senior Backend Engineer (Go)",
        "description": "We are looking for a backend engineer to build ...",
        "company": {"id": 2, "name": "OpenAI", "domain": "openai.com", "logo": "https://alion.io/storage/...webp",
                    "description": "OpenAI is an AI research and deployment company ..."},
        "seniority": "senior",
        "work_mode": "hybrid",
        "countries": ["US"],
        "salary": {"min": 250000, "max": 380000, "currency": "USD", "period": "year"},
        "technologies": ["Go", "Kubernetes", "PostgreSQL"],
        "first_seen_at": "2026-09-13T20:12:28Z"
      }
    ],
    "has_more": true,
    "next_cursor": "MTc4OTMzMDM0ODoxMDQ4MDQw"
  }
}

100 vacancies per request. Each item is one vacancy with its description and its company (shortened here). Link candidates to its url.

3. Next page

Repeat the request with cursor= set to next_cursor. Stop when has_more is false. One query goes up to 20 pages (2,000 vacancies); for more, narrow it, for example with posted_since.

Filters

Add them to the URL as plain names. Case does not matter; separate several values with commas.

FilterExample
Country or citylocations=germany,poland · locations=berlin · locations=de
Roleroles=backend,frontend
Technologytechnologies=python,react
Seniorityseniority=senior,lead
Work modework_mode=remote (or office)
Employmentemployment=full-time
Industryindustries=fintech,ai
Companycompany=stripe.com
Salary from, USD a yearsalary_min=80000
Keywordsearch=kubernetes
New sinceposted_since=24h
Page sizelimit=50 (default and max 100)
Description as HTML, or nonedescription_format=html · description_format=none
curl -H "Authorization: Bearer alion_YOUR_KEY" \
  "https://alion.io/api/job.getList?locations=germany,poland&technologies=python&work_mode=remote"

Also: languages, english_level, education, benefits, remote_locations. A name we do not know returns 422 saying which one.

Accepted names

curl -H "Authorization: Bearer alion_YOUR_KEY" \
  "https://alion.io/api/dict.getList?name=roles"

Other lists: countries, technologies&q=py, seniority, markets.

One vacancy with description

curl -H "Authorization: Bearer alion_YOUR_KEY" \
  "https://alion.io/api/job.get?id=1048040"

Response fields

A field is null when the value is not known. Times are UTC (ISO 8601), money is in the posted currency plus USD.

Vacancy fieldTypeValues
idintegerAlion vacancy id
urlstringVacancy page on Alion (send candidates here)
titlestringJob title
descriptionstringFull text of the vacancy (plain text; HTML with description_format=html)
companyobjectSee the company table below
rolestringRole, e.g. Backend, Data Engineering
role_familystringRole area, e.g. Backend, Data Science (dict.getList?name=roles)
senioritystringintern, junior, middle, senior, staff, lead, head
employment_typestringfull_time, part_time, contractor, cofounder, freelance, internship
work_modestringon_site, hybrid, remote
remote_scopestringFor remote jobs: stated_countries, stated_regions, worldwide
hiring_geo_confidencestringHow the hiring geography is known: explicit, structured, inferred
locationslist of stringsOffices, e.g. "Berlin, Germany"
countrieslist of stringsISO codes of the offices, e.g. "DE"
hiring_countrieslist of stringsFor remote jobs: ISO codes of countries the company can hire in
salaryobjectmin, max, currency (USD, EUR…), period (year, month, week, day, hour), gross (true / false / null), usd_annual; null when not posted
salary_estimateobjectWhen no salary is posted: min_usd, max_usd, period (year), method, sample_n (vacancies the estimate is based on)
experience_years_minintegerYears of experience required
visa_sponsorship, relocation_package, has_equitybooleantrue when the vacancy offers it
technologieslist of stringsRequired technologies, e.g. "Python", "PostgreSQL"
statusstringlive, closed
first_seen_atdatetimeWhen Alion found the vacancy; the feed is sorted by it
employer_posted_datedatePosting date on the employer's job board
last_verified_atdatetimeWhen the vacancy was last confirmed
board_verifiedbooleantrue when the employer's job board confirmed it in the last two days
closed_atdatetimeWhen it closed (for closed ones)
days_openintegerDays it has been open (until closing, for closed ones)
trust.levelstringok, stale (open unusually long), ghost (reposted many times without hiring)
trust.repost_countintegerHow many times it was reposted
idsobjectrole_id, seniority_id, employment_id, remote_id: the same values as ids, for the *_ids filters
Company fieldTypeValues
idintegerAlion company id (the company_id filter)
name, domainstringCompany name and website domain
urlstringCompany page on Alion
logostringLogo image URL
descriptionstringAbout the company, plain text
industry, industry_segmentstringe.g. Financial Services / FinTech (dict.getList?name=markets)
size_bandstring1-10, 11-50, 51-200, 201-500, 501-1000, 1001-5000, 5000+
headquartersobjectcity, country (name, iso)
is_staffing_agencybooleantrue for recruitment agencies
ats_vendorstringThe employer's hiring system, e.g. Greenhouse, Lever, Workday
open_jobsintegerOpen vacancies at the company on Alion

Limits and errors

1,000 requests a day per key, unless we agreed a higher limit. 401 means a wrong key. 429 means the limit is reached: wait for the seconds in Retry-After.

.