Keys
Send your key in the Authorization header. Create one on API keys. Every answer is JSON: success, then response or error.
curl "https://alion.io/api/company.match?domain=stripe.com" \
  -H "Authorization: Bearer YOUR_KEY"
Prices, limits and errors
Every response says what it cost in meta.credits_charged and what is left in meta.credits_left. 1 credit = $0.10.
A company with basic info0.02 credit
Each extra slice of a company+0.05 credit
A job0.02 credit
A market slice1 credit
Finding a company, counting resultsfree
HTTPWhat happened
401No key, or the key was deleted
402Not enough credits: the error says how many the call needs and how many are left
404No company or job matches
422A parameter is wrong: the error names it and suggests the closest value
429A limit is reached: wait the seconds in Retry-After
LimitHow much
Requests60 a minute and 1,000 a day per key
Rows a day per account10,000 companies and 20,000 jobs, all keys and AI apps together; resets at 00:00 UTC
Depth of one query1,000 companies or 2,000 jobs; narrow the filters to read further
Need more for a product or a data deal? Write to [email protected].
One company
Send a website or a name and the slices you need. Basic info 0.02 credit, each slice with data in it +0.05. A slice we know nothing about is left out and not paid for.
curl "https://alion.io/api/company.get?domain=stripe.com&slices=tech,funding,hiring" \
  -H "Authorization: Bearer YOUR_KEY"
You sendWhat it is
domainThe company website, like stripe.com. Or name, or id from an earlier answer
slicesAny of products, tech, funding, hiring, offices, pay, visa, legal_entity, or all
You getWhat it is
id, name, domain, logo, descriptionWho they are; the logo is a 256 px image url
industry, segment, size, founded, hq, linksThe basics; unknown fields are null
products, tech, fundingWhat they sell, what their jobs ask for, the money raised
hiring, offices, pay, visaOpen jobs and the trend, where they work, what they pay, visa sponsorship by country
legal_entityThe registered name, country, status and registration numbers
List of companies
Companies of a niche, 0.02 credit each. Counting is free: add count_only=1. Rows can carry the products, tech, funding and hiring slices (+0.05 each).
curl "https://alion.io/api/company.getList?industry=fintech&country=DE&size=201-500,501-1000&limit=25" \
  -H "Authorization: Bearer YOUR_KEY"
You sendWhat it is
industryOne or more, comma separated: fintech, healthcare, gaming…
countryISO codes or names, comma separated
size1-10, 11-50, 51-200, 201-500, 501-1000, 1001-5000, 5000+
founded_from, founded_toYears
technologyA technology the company requires in its job postings, named as it is usually written: Snowflake, Kubernetes, React (comma separated for any of several)
hiringtrue: only companies with open jobs
slicesproducts, tech, funding, hiring
limit, cursorUp to 50 rows; pass next_cursor back for the next page, up to 20 pages (1,000 companies) for one set of filters
Jobs
Live jobs with their company, filtered like the jobs page. 0.02 credit each, up to 100 a request.
curl "https://alion.io/api/job.getList?locations=germany,poland&technologies=python&work_mode=remote" \
  -H "Authorization: Bearer YOUR_KEY"
{
  "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"},
        "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"
  }
}
Next page: send the same request with cursor set to next_cursor, until has_more is false. One query goes up to 20 pages (2,000 jobs); for more, narrow it, for example with posted_since. Link people to the job's url.
You sendExample
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
Pay from, USD a yearsalary_min=80000
Words in the title or textsearch=kubernetes
New sinceposted_since=24h · posted_since=2026-10-01
Only trusted jobstrust=verified drops jobs we score as likely ghost; the default all keeps them with their trust.level
Rowslimit=50 (default and max 100)
Descriptiondescription_format=html · description_format=none
Also: languages, english_level, education, benefits, remote_locations. Case does not matter. A name we do not know returns 422 saying which one. The names we accept, free:
curl "https://alion.io/api/dict.getList?name=roles" \
  -H "Authorization: Bearer YOUR_KEY"
Other lists: countries, technologies&q=py, seniority, markets. One job by its id or url:
curl "https://alion.io/api/job.get?id=1048040" \
  -H "Authorization: Bearer YOUR_KEY"
Job fields
A field is null when we do not know it. Times are UTC (ISO 8601), pay is in the posted currency plus USD.
FieldWhat it is
id, url, titleThe job id, its page on Alion (send people here) and its title
descriptionThe full text: plain, or HTML with description_format=html
companyid, name, domain, url, logo, description, industry, industry_segment, size_band, headquarters (city, country), is_staffing_agency, ats_vendor (Greenhouse, Lever, Workday…), open_jobs
role, role_familyBackend, Data Engineering… (dict.getList?name=roles)
seniorityintern, junior, middle, senior, staff, lead, head
employment_typefull_time, part_time, contractor, cofounder, freelance, internship
work_modeon_site, hybrid, remote
remote_scopeFor remote jobs: unspecified, stated_countries, stated_regions, worldwide
remote_scope_basisWhere the zone came from: board_field and posting_text are the employer's words; inferred_payroll_markers, inferred_company_offices, inferred_city, inferred_board_market, inferred_posting_language are our reading; board_flag_no_place and conflicting leave it unspecified
remote_working_hoursThe working clock a remote job asks for: label, utc_offset_min, utc_offset_max (hours)
hiring_geo_confidenceexplicit, structured, inferred
locations, countriesOffices ("Berlin, Germany") and their ISO codes ("DE")
hiring_countriesFor remote jobs: ISO codes of the countries the company can hire in
salarymin, max, currency, period (year, month, week, day, hour), gross, usd_annual; null when not posted
salary_estimateWhen no pay is posted: min_usd, max_usd, period, method, sample_n (jobs it is based on)
experience_years_minYears of experience asked for
visa_sponsorship, relocation_package, has_equitytrue when the job offers it
technologiesWhat the job asks for: "Python", "PostgreSQL"…
status, closed_at, days_openlive or closed, when it closed, days it has been open
first_seen_atWhen we found it; the list is sorted by it
employer_posted_dateThe date on the employer's board
last_verified_at, board_verifiedWhen it was last confirmed; true when the employer's board confirmed it in the last two days
trust.level, trust.repost_countok, stale (open unusually long) or ghost (reposted many times without hiring); how many times it was reposted
idsrole_id, seniority_id, employment_id, remote_id: the same values as ids, for the *_ids filters
AI agents (MCP)
The same data as tools for Claude, ChatGPT, Cursor and Codex at https://alion.io/mcp, at the same prices. How to connect: AI agents.