Skip to main content
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.
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 its id 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 returns 404 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. Only id 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.
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

Send a job ID or a job URL, such as x.com/i/jobs/123.

401 Unauthenticated

Anonymous requests get WWW-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

The job closed or the ID is wrong. This answer is free.

502 X API unavailable

The read service returned an error. Retry after a short delay.

503 Service busy

X failed the job lookup, or Xquik is busy. Wait for Retry-After, then retry. The request costs nothing.

429 Rate limit exceeded

You exceeded your tier rate limit. Wait for the Retry-After header before retrying.

424 Dependency failed

The normalized v1 response contract can return 424 when the read service is unavailable.
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.