Skip to main content

Overview

The ScrapeJobsParams interface defines all available parameters for the scrapeJobs() function. It provides fine-grained control over which sites to scrape, search criteria, authentication, output format, and more.

Interface Definition

export interface ScrapeJobsParams {
  // Search criteria
  site_name?: string | string[] | Site | Site[];
  search_term?: string;
  google_search_term?: string;
  location?: string;
  distance?: number;
  is_remote?: boolean;
  job_type?: string;
  easy_apply?: boolean;
  results_wanted?: number;
  hours_old?: number;
  offset?: number;

  // Site-specific
  country_indeed?: string;
  linkedin_fetch_description?: boolean;
  indeed_fetch_description?: boolean;
  linkedin_company_ids?: number[];

  // Output format
  description_format?: string;
  enforce_annual_salary?: boolean;
  verbose?: number;

  // Proxy
  proxies?: string | string[];

  // Authentication
  use_creds?: boolean;
  credentials?: ProviderCredentials;
  linkedin_username?: string;
  linkedin_password?: string;
  indeed_username?: string;
  indeed_password?: string;
  glassdoor_username?: string;
  glassdoor_password?: string;
  ziprecruiter_username?: string;
  ziprecruiter_password?: string;
  bayt_username?: string;
  bayt_password?: string;
  naukri_username?: string;
  naukri_password?: string;
  bdjobs_username?: string;
  bdjobs_password?: string;

  // State management
  profile?: string;
  state_file?: string;
  skip_dedup?: boolean;
}

Parameters

Search Criteria

site_name
string | string[] | Site | Site[]
Job boards to scrape. Accepts:
  • Single string: 'linkedin'
  • Array of strings: ['linkedin', 'indeed']
  • Site enum: Site.LINKEDIN
  • Array of Site enums: [Site.LINKEDIN, Site.INDEED]
Supported values: linkedin, indeed, zip_recruiter, glassdoor, google, google_careers, bayt, naukri, bdjobs
search_term
string
Job title or keywords to search for (e.g., 'software engineer', 'product manager')
google_search_term
string
Custom search term specifically for Google job search (overrides search_term for Google)
location
string
Geographic location (e.g., 'San Francisco, CA', 'New York', 'remote')
distance
number
Search radius in miles from the specified location (default varies by site)
is_remote
boolean
Filter for remote/work-from-home positions only
job_type
string
Filter by employment type. Accepts: 'fulltime', 'parttime', 'contract', 'temporary', 'internship'
easy_apply
boolean
Filter for jobs with “Easy Apply” or quick application features (LinkedIn only)
results_wanted
number
Maximum number of jobs to return (default: 15)
hours_old
number
Only return jobs posted within the last N hours (e.g., 24 for jobs from the last day)
offset
number
Number of results to skip (for pagination)

Site-Specific Options

country_indeed
string
Country code for Indeed (e.g., 'usa', 'uk', 'canada'). See full list in Country documentation.
linkedin_fetch_description
boolean
Fetch full job descriptions from LinkedIn (slower but more complete data)
indeed_fetch_description
boolean
Fetch full job descriptions from Indeed (slower but more complete data)
linkedin_company_ids
number[]
Array of LinkedIn company IDs to filter by (e.g., [1441, 2374] for Google and Microsoft)

Output Format

description_format
string
Format for job descriptions. Options:
  • 'markdown' - Markdown formatted text
  • 'html' - HTML markup
  • 'plain' - Plain text (default)
enforce_annual_salary
boolean
Convert all salaries to annual equivalents (useful for comparing hourly vs. yearly compensation)
verbose
number
Logging verbosity level (0 = silent, 1 = errors only, 2 = warnings, 3 = info, 4 = debug)

Proxy Configuration

proxies
string | string[]
HTTP/HTTPS proxy servers to route requests through. Accepts:
  • Single proxy: 'http://proxy.example.com:8080'
  • Array of proxies: ['http://proxy1.com:8080', 'http://proxy2.com:8080']
Format: protocol://[username:password@]host:port

Authentication

use_creds
boolean
Enable authenticated scraping when anonymous scraping is blocked. Can also be set via JOBSPY_CREDS=1 environment variable.
credentials
ProviderCredentials
Pre-built credentials object (takes precedence over individual username/password fields). See ProviderCredentials.
linkedin_username
string
LinkedIn account email/username. Can also be set via LINKEDIN_USERNAME environment variable.
linkedin_password
string
LinkedIn account password. Can also be set via LINKEDIN_PASSWORD environment variable.
indeed_username
string
Indeed account email/username. Can also be set via INDEED_USERNAME environment variable.
indeed_password
string
Indeed account password. Can also be set via INDEED_PASSWORD environment variable.
glassdoor_username
string
Glassdoor account email/username. Can also be set via GLASSDOOR_USERNAME environment variable.
glassdoor_password
string
Glassdoor account password. Can also be set via GLASSDOOR_PASSWORD environment variable.
ziprecruiter_username
string
ZipRecruiter account email/username. Can also be set via ZIPRECRUITER_USERNAME environment variable.
ziprecruiter_password
string
ZipRecruiter account password. Can also be set via ZIPRECRUITER_PASSWORD environment variable.
bayt_username
string
Bayt account email/username. Can also be set via BAYT_USERNAME environment variable.
bayt_password
string
Bayt account password. Can also be set via BAYT_PASSWORD environment variable.
naukri_username
string
Naukri account email/username. Can also be set via NAUKRI_USERNAME environment variable.
naukri_password
string
Naukri account password. Can also be set via NAUKRI_PASSWORD environment variable.
bdjobs_username
string
BDJobs account email/username. Can also be set via BDJOBS_USERNAME environment variable.
bdjobs_password
string
BDJobs account password. Can also be set via BDJOBS_PASSWORD environment variable.

State Management

profile
string
Profile name to load from jobspy.json config file (CLI only)
state_file
string
Path to state file for deduplication tracking (default: ~/.config/jobspy/state.json)
skip_dedup
boolean
Skip deduplication of jobs across sites (faster but may return duplicates)

Example Usage

import { scrapeJobs, Site } from 'jobspy-js';

const response = await scrapeJobs({
  site_name: [Site.LINKEDIN, Site.INDEED],
  search_term: 'frontend developer',
  location: 'Seattle, WA',
  results_wanted: 25
});

Advanced Filtering

import { scrapeJobs } from 'jobspy-js';

const response = await scrapeJobs({
  site_name: ['linkedin', 'indeed', 'glassdoor'],
  search_term: 'senior data engineer',
  location: 'remote',
  is_remote: true,
  job_type: 'fulltime',
  hours_old: 48, // Only jobs posted in last 2 days
  results_wanted: 50,
  description_format: 'markdown',
  linkedin_fetch_description: true
});

With Authentication

import { scrapeJobs } from 'jobspy-js';

const response = await scrapeJobs({
  site_name: 'linkedin',
  search_term: 'product manager',
  location: 'San Francisco, CA',
  use_creds: true,
  linkedin_username: '[email protected]',
  linkedin_password: 'your-password'
});

With Proxies

import { scrapeJobs } from 'jobspy-js';

const response = await scrapeJobs({
  site_name: ['indeed', 'glassdoor'],
  search_term: 'software architect',
  proxies: [
    'http://proxy1.example.com:8080',
    'http://proxy2.example.com:8080'
  ]
});
import { scrapeJobs } from 'jobspy-js';

const response = await scrapeJobs({
  site_name: 'linkedin',
  search_term: 'engineer',
  linkedin_company_ids: [1441, 2374], // Google and Microsoft
  results_wanted: 100
});

Notes

  • All parameters are optional, but at least site_name is recommended for meaningful results.
  • Environment variables take precedence over parameters for credential fields.
  • The credentials object takes precedence over individual username/password parameters.
  • Authenticated scraping (use_creds: true) should only be used when anonymous scraping fails.
  • Fetching full descriptions (linkedin_fetch_description, indeed_fetch_description) significantly increases scraping time.

Build docs developers (and LLMs) love