Jobs
X job listing API for descriptions & salary data
Retrieve 1 public X job listing by ID or URL. Get its full description as text and Markdown, salary, seniority, work type, and apply link. 1 credit per call.
- 200
- 400
- 401
- 402
- 404
- 424
- 429
- 502
- 503
GET
X job listing API for descriptions & salary data
Read 1 public job listing on X with its full description. Pass a job ID or a job URL.
Send a job ID or a job URL, such as
The job closed or the ID is wrong. This answer is free.
The read service returned an error. Retry after a short delay.
X failed the job lookup, or Xquik is busy. Wait for
You exceeded your tier rate limit. Wait for the
The normalized v1 response contract can return 424 when the read service is unavailable.
1 credit per call · All plans from $0.00012/credit
Find a job ID
Use job search to find listings by keyword. Each result carries itsid and its url on X.
The path also takes a job URL such as x.com/i/jobs/1899202395210649861. URL-encode it first. Anything else returns 400 invalid_job_id.
Read the description
The listing returns its description in 2 forms.description is plain text with 1 line per paragraph. descriptionMarkdown keeps headings, lists, links, bold, and italics. It holds no HTML, and it escapes characters that would read as Markdown, such as [, * and a - that starts a line.
Use the Markdown form to show the listing. Use the plain text for search indexes and classifiers.
Handle a closed job
X removes a listing when the employer closes it. The lookup then returns404 job_not_found and costs nothing. Drop the job from your store, or mark it closed.
Path parameters
string
required
Job ID, or URL-encoded job URL such as
x.com/i/jobs/1899202395210649861.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
The job listing.
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
Where the work happens:
onsite, remote, or hybrid.string
Contract type:
full_time, full_time_contract, part_time, or contract_to_hire.string
Seniority, from
intern to executive.string
Job function, such as
software_engineering.string
Team inside the company.
string
When the employer posted the job, in ISO 8601.
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.boolean
Whether X features the job.
string
Short summary of the job, as plain text.
string
Full description as plain text, 1 line per paragraph.
string
Full description as Markdown, with headings, lists, links, bold, and italics.
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,
description, profilePicture, and profileImageShape. A job has none when X imported it from a
job board or no longer shows the account.400 Invalid job ID
x.com/i/jobs/123.
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.404 Job not found
502 X API unavailable
503 Service busy
Retry-After, then retry. The request costs nothing.
429 Rate limit exceeded
Retry-After header before retrying.
424 Dependency failed
Next steps. Search job listings to find more jobs, or get the hiring account’s profile with the
account.username, when the job has an account.