Docs
Jobs

Jobs

Fetch Twitter Jobs and get comprehensive information about job listings, companies, positions, and application details.

Overview

The Jobs endpoints provide access to Twitter's job listings platform, allowing you to retrieve job postings, company information, position details, and application data. These endpoints are essential for building job search applications, recruitment tools, or career platforms integrated with Twitter.

Key Features

  • Job Listings: Access comprehensive job postings with full details
  • Company Information: Get detailed company profiles and information
  • Position Details: Retrieve complete position descriptions and requirements
  • Search & Filter: Search jobs by keywords, location, company, and more
  • Application Data: Access application information and requirements
  • Real-Time Updates: Get the most current job listings available

Authentication

All endpoints require authentication via the X-API-KEY header:

X-API-KEY: YOUR_API_KEY

For detailed authentication information, see our Authentication Guide.


Endpoints

Get Job by ID

Retrieves detailed information about a specific job posting, including position details, company information, requirements, and application instructions.

Endpoint: GET /job/{job_id}

Path Parameters

NameTypeRequiredDescription
job_idstringYesThe unique job ID

Request Examples

curl --request GET \
  --url 'https://<direct.gateway>/job/1234567890123456789' \
  --header 'X-API-KEY: YOUR_API_KEY'

JavaScript:

const response = await fetch('https://<direct.gateway>/job/1234567890123456789', {
  headers: { 'X-API-KEY': 'YOUR_API_KEY' }
});
const job = await response.json();

Python:

import requests
 
response = requests.get(
    'https://<direct.gateway>/job/1234567890123456789',
    headers={'X-API-KEY': 'YOUR_API_KEY'}
)
job = response.json()

Response Example

{
  "id": "1234567890123456789",
  "title": "Senior Software Engineer",
  "description": "We are looking for an experienced software engineer...",
  "company": {
    "id": "987654321",
    "name": "Tech Company Inc.",
    "username": "techcompany",
    "verified": true,
    "logo_url": "https://pbs.twimg.com/profile_images/...",
    "website": "https://techcompany.com",
    "description": "Leading technology company",
    "location": "San Francisco, CA",
    "employee_count": "1000-5000"
  },
  "location": {
    "type": "remote",
    "city": "San Francisco",
    "state": "CA",
    "country": "United States",
    "remote_allowed": true
  },
  "employment_type": "full-time",
  "salary": {
    "min": 120000,
    "max": 180000,
    "currency": "USD",
    "period": "yearly"
  },
  "requirements": {
    "experience_level": "senior",
    "education": "Bachelor's degree or equivalent",
    "skills": ["JavaScript", "React", "Node.js", "TypeScript"],
    "years_experience": 5
  },
  "posted_at": "2024-10-01T10:00:00.000Z",
  "application_url": "https://techcompany.com/careers/apply/123",
  "application_deadline": "2024-11-01T23:59:59.000Z",
  "views": 1523,
  "applications": 87
}

Response Fields

FieldTypeDescription
idstringUnique job ID
titlestringJob title
descriptionstringFull job description
companyobjectCompany information
locationobjectJob location details
employment_typestringType: full-time, part-time, contract, internship
salaryobjectSalary range information
requirementsobjectJob requirements and qualifications
posted_atstringWhen job was posted (ISO 8601)
application_urlstringURL to apply for the job
viewsintegerNumber of views
applicationsintegerNumber of applications

Common Use Cases

  1. Job Details Page: Display complete job information
  2. Application Tracking: Monitor application counts and views
  3. Job Aggregation: Collect job data for job boards
  4. Company Research: Get company information from job postings

Search Jobs

Searches for jobs based on keywords, location, company, and various filters. This is the primary endpoint for job discovery.

Endpoint: GET /jobs/search

Query Parameters

NameTypeRequiredDescription
qstringNoSearch query (keywords, skills, job title)
locationstringNoLocation filter (city, state, country)
companystringNoCompany name or username
employment_typestringNoFilter: full-time, part-time, contract, internship, remote
experience_levelstringNoFilter: entry, mid, senior, executive
salary_minintegerNoMinimum salary
salary_maxintegerNoMaximum salary
posted_sincestringNoJobs posted since date (ISO 8601: YYYY-MM-DD)
limitintegerNoNumber of results (Default: 20, Max: 100)
cursorstringNoPagination cursor

Request Examples

# Search for software engineer jobs
curl --request GET \
  --url 'https://<direct.gateway>/jobs/search?q=software%20engineer&limit=20' \
  --header 'X-API-KEY: YOUR_API_KEY'
 
# Search remote jobs in tech
curl --request GET \
  --url 'https://<direct.gateway>/jobs/search?q=developer&employment_type=remote&limit=20' \
  --header 'X-API-KEY: YOUR_API_KEY'

JavaScript:

// Search jobs
const params = new URLSearchParams({
  q: 'software engineer',
  location: 'San Francisco',
  employment_type: 'full-time',
  experience_level: 'senior',
  limit: 20
});
 
const response = await fetch(`https://<direct.gateway>/jobs/search?${params}`, {
  headers: { 'X-API-KEY': 'YOUR_API_KEY' }
});
const jobs = await response.json();

Python:

import requests
 
params = {
    'q': 'software engineer',
    'location': 'San Francisco',
    'employment_type': 'full-time',
    'experience_level': 'senior',
    'limit': 20
}
 
response = requests.get(
    'https://<direct.gateway>/jobs/search',
    params=params,
    headers={'X-API-KEY': 'YOUR_API_KEY'}
)
jobs = response.json()

Response Example

{
  "data": [
    {
      "id": "1234567890123456789",
      "title": "Senior Software Engineer",
      "company": {
        "name": "Tech Company Inc.",
        "username": "techcompany",
        "verified": true
      },
      "location": {
        "city": "San Francisco",
        "state": "CA",
        "remote_allowed": true
      },
      "employment_type": "full-time",
      "salary": {
        "min": 120000,
        "max": 180000,
        "currency": "USD"
      },
      "posted_at": "2024-10-01T10:00:00.000Z"
    }
  ],
  "meta": {
    "result_count": 20,
    "next_cursor": "eyJpZCI6IjEyMzQ1Njc4OTAxMjM0NTY3ODkifQ=="
  }
}

Search Tips

  • Use specific keywords: More specific terms yield better results
  • Combine filters: Use multiple filters to narrow results
  • Location flexibility: Try city, state, or country for location
  • Employment type: Use remote to find remote positions

Get Jobs by Company

Retrieves all job listings from a specific company. Useful for company career pages and recruitment tracking.

Endpoint: GET /company/{company_id}/jobs

Path Parameters

NameTypeRequiredDescription
company_idstringYesCompany user ID or username

Query Parameters

NameTypeRequiredDescription
limitintegerNoNumber of results (Default: 20, Max: 100)
cursorstringNoPagination cursor
active_onlybooleanNoOnly active/open positions (Default: true)

Request Examples

# Get all jobs from a company
curl --request GET \
  --url 'https://<direct.gateway>/company/techcompany/jobs?limit=20' \
  --header 'X-API-KEY: YOUR_API_KEY'

JavaScript:

const response = await fetch(
  'https://<direct.gateway>/company/techcompany/jobs?active_only=true&limit=20',
  { headers: { 'X-API-KEY': 'YOUR_API_KEY' } }
);
const jobs = await response.json();

Response Example

{
  "company": {
    "id": "987654321",
    "name": "Tech Company Inc.",
    "username": "techcompany"
  },
  "jobs": [
    {
      "id": "1234567890123456789",
      "title": "Senior Software Engineer",
      "employment_type": "full-time",
      "location": {
        "city": "San Francisco",
        "remote_allowed": true
      },
      "posted_at": "2024-10-01T10:00:00.000Z"
    }
  ],
  "meta": {
    "total_jobs": 45,
    "active_jobs": 32,
    "result_count": 20,
    "next_cursor": "..."
  }
}

Use Cases

  • Company Career Pages: Display all jobs from a company
  • Recruitment Tracking: Monitor company hiring activity
  • Competitor Analysis: Track competitor job postings

Get Company Information

Retrieves detailed information about a company, including profile, description, location, and employee count.

Endpoint: GET /company/{company_id}

Path Parameters

NameTypeRequiredDescription
company_idstringYesCompany user ID or username

Request Example

curl --request GET \
  --url 'https://<direct.gateway>/company/techcompany' \
  --header 'X-API-KEY: YOUR_API_KEY'

Response Example

{
  "id": "987654321",
  "name": "Tech Company Inc.",
  "username": "techcompany",
  "description": "Leading technology company focused on innovation",
  "website": "https://techcompany.com",
  "location": {
    "city": "San Francisco",
    "state": "CA",
    "country": "United States"
  },
  "employee_count": "1000-5000",
  "industry": "Technology",
  "founded": 2010,
  "logo_url": "https://pbs.twimg.com/profile_images/...",
  "verified": true,
  "total_jobs_posted": 145,
  "active_jobs": 32
}

Response Fields

FieldTypeDescription
idstringCompany user ID
namestringCompany name
usernamestringCompany Twitter username
descriptionstringCompany description
websitestringCompany website URL
locationobjectCompany location
employee_countstringEmployee count range
industrystringIndustry sector
foundedintegerYear founded
verifiedbooleanWhether company is verified
total_jobs_postedintegerTotal jobs posted
active_jobsintegerCurrently active job postings

Employment Types

Jobs can have different employment types:

TypeDescription
full-timeFull-time permanent position
part-timePart-time position
contractContract-based work
internshipInternship position
remoteRemote work position
hybridCombination of remote and on-site

Experience Levels

Jobs are categorized by experience level:

LevelDescription
entryEntry-level, 0-2 years experience
midMid-level, 2-5 years experience
seniorSenior-level, 5+ years experience
executiveExecutive/C-level positions

Best Practices

Jobs-Specific Tips

  • Use specific filters: Narrow results with location, employment_type, and salary filters
  • Cache job data: Jobs don't change frequently, cache for 10-15 minutes
  • Handle missing fields: Some job fields are optional - handle gracefully in your application
  • Use search efficiently: Combine multiple filters to reduce need for multiple searches

For general API best practices including error handling, rate limits, and performance optimization, see our Best Practices Guide.

3. Monitor New Jobs

Track new job postings for companies:

async function getNewJobs(companyId, sinceDate) {
  const response = await fetch(
    `/company/${companyId}/jobs?posted_since=${sinceDate}`,
    { headers: { 'X-API-KEY': API_KEY } }
  );
  const jobs = await response.json();
  
  return jobs.data.filter(job => 
    new Date(job.posted_at) > new Date(sinceDate)
  );
}

4. Pagination Handling

Implement proper pagination for large result sets. See our Pagination Guide for detailed examples and best practices.


For comprehensive error handling and rate limits information, see our guides:

Troubleshooting

IssueSymptomsPossible CausesSolutions
No jobs found in searchSearch returns empty resultsSearch terms too specific, filters too restrictive, no jobs match criteriaBroaden search terms, remove some filters, try different location or company filters
Job data incompleteMissing fields in job responseCompany didn't provide all information, job posting is incomplete, some fields are optionalSome fields are optional and may not always be present - check if job is still active, handle missing fields gracefully in your application

FAQ

How often are job listings updated?

Job listings are updated in real-time. New jobs appear immediately, and removed jobs are removed from results.

Can I get historical job data?

The API provides current job listings. For historical data, you would need to track jobs over time yourself.

Are all jobs available through the API?

The API provides access to jobs posted on Twitter's job platform. Some companies may post jobs elsewhere.

How do I filter for remote jobs?

Use employment_type=remote in your search query to find remote positions.

Can I get application status?

The API provides job information and application URLs, but application status tracking is handled by the company's application system.

How accurate is salary information?

Salary information is provided by companies and may vary. Some jobs may not include salary information.