Jobs
X job search API for listings, salary & company
Search public X job listings by keyword, location, seniority, work type, and company. Each job returns its title, salary, and apply link. 1 credit per job.
- 200
- 400
- 401
- 402
- 424
- 429
- 502
- 503
GET
X job search API for listings, salary & company
Search the public job listings on X by keyword. Narrow them by location, work type, seniority, employment type, or company.
The Node.js and Python snippets build 1 row per job. Store the rows with the cursor before you request the next page.
A request without
Start again without
The read service returned an error. Retry after a short delay.
You exceeded your tier rate limit. Wait for the
The normalized v1 response contract can return 424 when the read service is unavailable.
Requested result counts are upper bounds for paid authenticated calls. When remaining credits cannot cover the full page, Xquik returns fewer results. If zero paid results are affordable, it returns
402 insufficient_credits.1 credit per job returned · All plans from $0.00012/credit
Narrow a job search
Start with a keyword inq, such as a job title or a skill. Add 1 filter at a time and check the results after each change.
locationtakes a city, region, or country as text.locationIdtakes an exact place from job locations.locationTypekeeps onsite, remote, or hybrid jobs.senioritykeeps levels from intern to executive.employmentTypekeeps full-time, part-time, or contract jobs.companykeeps the jobs of 1 employer.
Full Time, full-time, and full_time all work.
An unknown value returns 400 invalid_job_filter. Its message names the values the filter takes.
Page through job listings
Each page returnshas_next_page and next_cursor. Send next_cursor back as cursor with the same query and filters. Stop when has_next_page is false.
A cursor X refuses or that expired returns 400 invalid_cursor, which is free. Start again without cursor, then use next_cursor.
A job that closed is left out of the page and costs nothing. A page can therefore hold fewer jobs than pageSize.
Use the job id as the key in your store. Overlapping searches then add no duplicates.
Get the full description
Search returns the listing summary. Send a job’sid to get 1 job listing for the full description, work type, seniority, and team.
Query parameters
string
required
Keyword, such as a job title or skill. Alias:
query.string
City, region, or country as text, such as
Berlin.string
Location ID from job locations. It replaces
location when you send both.string
Where the work happens. Comma list of
onsite, remote, and hybrid.string
Comma list of
intern, entry_level, junior, mid_level, senior, lead, manager, and executive.string
Comma list of
full_time, full_time_contract, part_time, and contract_to_hire.string
Company name to match.
string
Pagination cursor from a previous response. Omit for the first page.
integer
Jobs per page. Range:
1-100. Defaults to 20. Aliases: limit, count, max_results, maxItems, max_items & per_page.Headers
string
Full account key. Sessions and OAuth also work.
string
Bearer xq_your_guest_key_here for paid_reads.Response
200 OK
X leaves out a field that a job lacks. Onlyid and url are always present.
object[]
Array of matching job listings.
Job object fields.
string
Job ID.
string
Job title.
string
The job page on X.
string
Where applicants apply, off X.
string
Location as the employer wrote it.
string
Salary as X shows it, such as
Starting at $225K.number
Lowest salary, in
salaryCurrencyCode per salaryInterval.number
Highest salary, in
salaryCurrencyCode per salaryInterval.string
ISO 4217 currency code of the salary.
string
Pay period of the salary:
annually or hourly.object
Company profile with
id, name, and logoUrl. Present on jobs X imported from a job board.object
The X account that posted the job, with
id, username, name, verified, verifiedType,
profilePicture, and profileImageShape. A job has none when X imported it from a job board or
no longer shows the account.boolean
Whether more results are available.
string
Cursor for the next page.
400 Missing query, unknown filter, or invalid cursor
q returns missing_query. A cursor X cannot read returns invalid_cursor:
cursor. All 3 answers are free.
401 Unauthenticated
Anonymous requests getWWW-Authenticate: Bearer and a guest wallet checkout action. This is not a Payment challenge.
402 Payment required
Account keys get account options. Guest keys get guest top-up only. No checkout starts automatically. Confirm any payment action.502 X API unavailable
429 Rate limit exceeded
Retry-After header before retrying.
424 Dependency failed
Next steps. Get 1 job listing for the full description, or search users to find the hiring accounts.