> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sentrion.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Jobs Search

> Search for jobs across all companies with location, industry, keyword, job board, and salary filters

Search for jobs across all companies without providing company identity inputs. Filter by location, department, industry, keywords, job type, seniority level, job board, salary availability, and more.

## Authentication

This endpoint requires a Bearer token. Enter your API key in the authorization field above — the `Bearer` prefix is added automatically.

## Request Body

### Location Filters

<ParamField body="jobs_locations" type="array">
  Filter jobs by location. Each item supports `country`, `state`, and `city`.

  <Expandable title="Location object properties">
    <ParamField body="country" type="string">
      Country name, such as `United States` or `Germany`.
    </ParamField>

    <ParamField body="state" type="string">
      State, province, or region, such as `California` or `Bavaria`.
    </ParamField>

    <ParamField body="city" type="string">
      City name, such as `San Francisco` or `London`.
    </ParamField>
  </Expandable>
</ParamField>

<ParamField body="exclude_jobs_locations" type="array">
  Exclude jobs from specific locations. Uses the same location object shape as `jobs_locations`.

  <Expandable title="Location object properties">
    <ParamField body="country" type="string">
      Country name, such as `United States` or `Germany`.
    </ParamField>

    <ParamField body="state" type="string">
      State, province, or region, such as `Texas` or `Ontario`.
    </ParamField>

    <ParamField body="city" type="string">
      City name, such as `Austin` or `Toronto`.
    </ParamField>
  </Expandable>
</ParamField>

<ParamField body="is_remote" type="boolean">
  Filter by remote status. `true` returns only remote jobs, `false` returns only non-remote jobs, and `null` includes both.
</ParamField>

<ParamField body="country_exists" type="boolean">
  Filter for jobs that include country information.
</ParamField>

### Date Filters

<ParamField body="published_after" type="string">
  Start date for the search in `YYYY-MM-DD` format. If omitted, the API defaults this to 2 months before the request date. This value cannot be older than 6 months before the request date.
</ParamField>

<ParamField body="published_before" type="string">
  End date for the search in `YYYY-MM-DD` format. If omitted, the API defaults this to the day after the request date.
</ParamField>

### Job Filters

<ParamField body="department" type="array">
  Filter by department.

  <Expandable title="Accepted values">
    * `Accounting`
    * `Administration`
    * `Arts and Design`
    * `Business Development`
    * `Communications`
    * `Community and Social Services`
    * `Compliance`
    * `Corporate Affairs`
    * `Corporate Strategy`
    * `Customer Experience`
    * `Customer Success`
    * `Customer Support`
    * `Data Analytics`
    * `Design`
    * `Education`
    * `Engineering`
    * `Facilities Management`
    * `Finance`
    * `Government Relations`
    * `Healthcare Services`
    * `Human Resources`
    * `Information Technology`
    * `Legal`
    * `Marketing`
    * `Operations`
    * `Product Management`
    * `Project Management`
    * `Public Relations`
    * `Purchasing`
    * `Quality Assurance`
    * `Real Estate`
    * `Research`
    * `Sales`
    * `Security`
    * `Software Engineering`
    * `Supply Chain`
    * `Support`
    * `Web Development`
  </Expandable>
</ParamField>

<ParamField body="industry" type="array">
  Filter by industry. Values are case-insensitive.

  <Expandable title="Accepted values">
    * `Accounting`
    * `Airlines/Aviation`
    * `Alternative Dispute Resolution`
    * `Alternative Medicine`
    * `Animation`
    * `Apparel & Fashion`
    * `Architecture & Planning`
    * `Arts and Crafts`
    * `Automotive`
    * `Aviation & Aerospace`
    * `Banking`
    * `Biotechnology`
    * `Broadcast Media`
    * `Building Materials`
    * `Business Supplies and Equipment`
    * `Capital Markets`
    * `Chemicals`
    * `Civic & Social Organization`
    * `Civil Engineering`
    * `Commercial Real Estate`
    * `Computer & Network Security`
    * `Computer Games`
    * `Computer Hardware`
    * `Computer Networking`
    * `Computer Software`
    * `Construction`
    * `Consumer Electronics`
    * `Consumer Goods`
    * `Consumer Services`
    * `Cosmetics`
    * `Dairy`
    * `Defense & Space`
    * `Design`
    * `E-Learning`
    * `Education Management`
    * `Electrical/Electronic Manufacturing`
    * `Entertainment`
    * `Environmental Services`
    * `Events Services`
    * `Executive Office`
    * `Facilities Services`
    * `Farming`
    * `Financial Services`
    * `Fine Art`
    * `Fishery`
    * `Food & Beverages`
    * `Food Production`
    * `Fund-Raising`
    * `Furniture`
    * `Gambling & Casinos`
    * `Glass, Ceramics & Concrete`
    * `Government Administration`
    * `Government Relations`
    * `Graphic Design`
    * `Health, Wellness and Fitness`
    * `Higher Education`
    * `Hospital & Health Care`
    * `Hospitality`
    * `Human Resources`
    * `Import and Export`
    * `Individual & Family Services`
    * `Industrial Automation`
    * `Information Services`
    * `Information Technology and Services`
    * `Insurance`
    * `International Affairs`
    * `International Trade and Development`
    * `Internet`
    * `Investment Banking`
    * `Investment Management`
    * `Judiciary`
    * `Law Enforcement`
    * `Law Practice`
    * `Legal Services`
    * `Legislative Office`
    * `Leisure, Travel & Tourism`
    * `Libraries`
    * `Logistics and Supply Chain`
    * `Luxury Goods & Jewelry`
    * `Machinery`
    * `Management Consulting`
    * `Maritime`
    * `Market Research`
    * `Marketing and Advertising`
    * `Mechanical or Industrial Engineering`
    * `Media Production`
    * `Medical Devices`
    * `Medical Practice`
    * `Mental Health Care`
    * `Military`
    * `Mining & Metals`
    * `Mobile Games`
    * `Motion Pictures and Film`
    * `Museums and Institutions`
    * `Music`
    * `Nanotechnology`
    * `Newspapers`
    * `Nonprofit Organization Management`
    * `Oil & Energy`
    * `Online Media`
    * `Outsourcing/Offshoring`
    * `Package/Freight Delivery`
    * `Packaging and Containers`
    * `Paper & Forest Products`
    * `Performing Arts`
    * `Pharmaceuticals`
    * `Philanthropy`
    * `Photography`
    * `Plastics`
    * `Political Organization`
    * `Primary/Secondary Education`
    * `Printing`
    * `Professional Training & Coaching`
    * `Program Development`
    * `Public Policy`
    * `Public Relations and Communications`
    * `Public Safety`
    * `Publishing`
    * `Railroad Manufacture`
    * `Ranching`
    * `Real Estate`
    * `Recreational Facilities and Services`
    * `Renewables & Environment`
    * `Research`
    * `Restaurants`
    * `Retail`
    * `Security and Investigations`
    * `Semiconductors`
    * `Shipbuilding`
    * `Software Development`
    * `Sporting Goods`
    * `Sports`
    * `Staffing and Recruiting`
    * `Supermarkets`
    * `Telecommunications`
    * `Textiles`
    * `Think Tanks`
    * `Tobacco`
    * `Translation and Localization`
    * `Transportation/Trucking/Railroad`
    * `Utilities`
    * `Venture Capital & Private Equity`
    * `Veterinary`
    * `Warehousing`
    * `Wholesale`
    * `Wine and Spirits`
    * `Wireless`
    * `Writing and Editing`
    * `Religious Institutions`
  </Expandable>
</ParamField>

<ParamField body="job_type" type="array">
  Filter by job type.

  <Expandable title="Accepted values">
    * `Full Time`
    * `Part Time`
    * `Contract`
    * `Internship`
    * `Volunteer`
  </Expandable>
</ParamField>

<ParamField body="seniority_level" type="array">
  Filter by seniority level.

  <Expandable title="Accepted values">
    * `Entry Level`
    * `Mid Level`
    * `Executive Level`
  </Expandable>
</ParamField>

<ParamField body="salary_data_available" type="boolean" default="true">
  Filter for jobs that include salary data.
</ParamField>

<ParamField body="is_agency" type="boolean" default="true">
  Include agency-posted jobs. Set to `false` to exclude them.
</ParamField>

### Keyword Filters

<ParamField body="job_keywords" type="object">
  Keywords to search for in job titles and descriptions.

  <Expandable title="Job keywords object properties">
    <ParamField body="title" type="array">
      Keywords to match in job titles.
    </ParamField>

    <ParamField body="description" type="array">
      Keywords to match in job descriptions.
    </ParamField>

    <ParamField body="mode" type="string" default="and">
      Match behavior for the keyword arrays.

      <Expandable title="Accepted values">
        * `and`
        * `or`
      </Expandable>
    </ParamField>
  </Expandable>
</ParamField>

<ParamField body="exclude_job_keywords" type="object">
  Keywords to exclude from job titles and descriptions.

  <Expandable title="Exclude keywords object properties">
    <ParamField body="title" type="array">
      Keywords to exclude from job titles.
    </ParamField>

    <ParamField body="description" type="array">
      Keywords to exclude from job descriptions.
    </ParamField>

    <ParamField body="mode" type="string" default="and">
      Exclusion behavior for the keyword arrays.

      <Expandable title="Accepted values">
        * `and`
        * `or`
      </Expandable>
    </ParamField>
  </Expandable>
</ParamField>

### Job Board Filters

<ParamField body="job_boards" type="boolean">
  Filter by job board sources. `true` includes only jobs sourced from job boards, `false` excludes them, and `null` includes both job boards and direct company career pages.
</ParamField>

<ParamField body="include_job_boards" type="array">
  Only include results from specific job boards. Values are case-insensitive.

  <Expandable title="Accepted values">
    * `Jobstreet`
    * `careeronestop`
    * `Linkedin`
    * `indeed`
    * `careerbuilder`
    * `careerjet`
    * `eurojobs`
    * `glassdoor`
    * `simplyhired`
    * `Jobs`
    * `monster`
    * `neuvoo`
    * `jobbank`
    * `EURES`
    * `Talent`
    * `poleemploi`
    * `practicelink`
    * `Theladders`
    * `Jobsintrucks`
    * `dice`
    * `foundit`
    * `seamanjobsite`
    * `Jobsdb`
    * `Graduateland`
    * `nurse`
    * `Adzuna`
    * `linkup`
    * `careerone`
    * `itjobboard`
    * `workcenter`
    * `seek`
    * `learn4good`
    * `computrabajo`
    * `kijiji`
    * `timesjobs`
    * `mycareersfuture`
    * `higheredjobs`
    * `Jobscentral`
    * `Jora`
    * `shine`
    * `Efinancialcareers`
    * `grabjobs`
    * `ziprecruiter`
    * `USAjobs`
    * `net-empregos`
    * `nationalevacaturebank`
    * `duunitori`
    * `Naukri`
    * `freshersworld`
    * `hosco`
    * `oilandgasjobsearch`
    * `retailjobsweb`
    * `ledigajobb`
    * `jobsinlisbon`
    * `arbeitsagentur`
    * `reed`
    * `totaljob`
    * `Hospitalityonline`
    * `catho`
    * `hirist`
    * `jobbsafari`
    * `clearancejobs`
    * `Trademe`
    * `Wayup`
    * `jobsearch`
    * `Governmentjobs`
    * `bayt`
    * `Pnet`
    * `careercross`
    * `clearedjobs`
    * `XING`
    * `naukrigulf`
    * `technojobs`
    * `hotelcareer`
    * `gumtree`
    * `alertaemprego`
    * `internships`
    * `Hospitalrecruiting`
    * `liepin`
    * `zhaopin`
    * `Careerrookie`
    * `Miracleworkers`
    * `careervault`
    * `Jobbkk`
    * `tecoloco`
    * `Moneyjobs`
    * `jobaline`
    * `Aimbridgehospitality`
    * `wuzzuf`
    * `gulftalent`
    * `brightermonday`
    * `Sologig`
    * `Idealist`
    * `cwjobs`
    * `Lavoraconnoi`
    * `jobberman`
    * `Jobtopgun`
    * `Fejobs`
    * `seasonaljobs`
    * `workinstartups`
    * `NRF`
    * `Cvmarket`
    * `monstergulf`
    * `ssmhealthcareers`
    * `behance`
    * `bumeran`
    * `jooble`
    * `workinretail`
    * `remoteok`
    * `Webbjobb`
    * `jobzilla`
    * `Bj`
    * `adzuna_com_au`
    * `Aspendentaljobs`
    * `Mudah`
    * `fastjobs`
    * `echinacities`
    * `Empregoxl`
    * `vic`
    * `secsinthecity`
    * `Iimjobs`
    * `naukri_com`
    * `hiredly`
    * `marocannonces`
    * `Stackoverflow`
    * `Educationweekjobs`
    * `Retailchoice`
    * `arbetsformedlingen`
    * `fashionjobs`
    * `Jobx`
    * `mommyjobsonlineaffiliates`
    * `Internshala`
    * `Workinnursingjobs`
    * `aussieemployment`
    * `Caterer`
    * `thefountaingroup`
    * `workatastartup`
    * `journalismjobs`
    * `Navalnuclearlab`
    * `transdevna`
    * `Jobthai`
    * `probonoaustralia`
    * `Workintheraphyjobs`
    * `ETSDental`
    * `Emprego`
    * `Fecareers`
    * `dribbble`
    * `idealist_org`
    * `Goinhouse`
    * `grapevinejobs`
    * `lettucejobs`
    * `Chinahr`
    * `weworkremotely`
    * `jobsdb_com`
    * `jobs_ca`
    * `Lkjordan`
    * `totalhire`
    * `hiredchina`
    * `pnet_co_za`
    * `appstack`
    * `remotive`
    * `jobx_com_au`
    * `foundationlist`
    * `daijob`
    * `hays`
    * `aimbridgehospitality_com`
    * `carga de trabalhos`
    * `bonsempregos`
    * `specialcounsel`
    * `turnerindustriesapplicantpro`
    * `Sportspeople`
    * `euremotejobs`
    * `Headhunter`
    * `appvault`
    * `localwise`
    * `Thorindustries`
    * `boards.greenhouse.io`
    * `Eecentre`
    * `skillinvest`
    * `retailchoice_com`
    * `Wdhs`
    * `Landing`
    * `Awarding`
    * `Care`
    * `sarkariresult`
    * `whcg`
    * `moneyjobs_com`
    * `JOBITT`
    * `apaservices`
    * `homefromcollege`
    * `headagent`
    * `vrs`
    * `expatjobschina`
    * `jobs_de`
    * `Ercjobs`
    * `ngshire`
    * `wsetglobal`
    * `miracleworkers_com`
    * `digitalenta`
    * `hrcc`
    * `sologig_com`
    * `sthgrampians`
    * `amesystems`
    * `careerrookie_com`
    * `eghs`
    * `care_com`
    * `lkjordan_com`
    * `beyondretail`
    * `ararat`
    * `awarding_org`
    * `ercjobs_com`
    * `workinnursingjobs_com`
    * `beekeeper`
    * `headhunter_com`
    * `workintheraphyjobs_com`
    * `Boards`
    * `navalnuclearlab_energy_gov`
    * `lever`
    * `empregosonline`
    * `buscojobs`
  </Expandable>
</ParamField>

<ParamField body="exclude_job_boards" type="array">
  Exclude results from specific job boards. Uses the same accepted values shown in `include_job_boards`.
</ParamField>

### Other Options

<ParamField body="exclude_duplicates" type="boolean" default="true">
  Remove duplicate job listings from results.
</ParamField>

<ParamField body="limit" type="integer" default="100">
  Maximum number of results to return. Min: `10`, Max: `500`.
</ParamField>

<ParamField body="search_after" type="array">
  Pagination cursor from a previous response. Pass the array exactly as returned, in the form `[timestamp, cursor_id]`.
</ParamField>

## Response

<ResponseField name="success" type="boolean" required>
  `true` if the search completed successfully.
</ResponseField>

<ResponseField name="data" type="object">
  The response payload. `null` when the request fails.

  <Expandable title="Data object properties">
    <ResponseField name="jobs" type="array" required>
      List of job objects that match the request.

      <Expandable title="Job object properties">
        <ResponseField name="Job Type" type="string">
          Type of employment, such as `Full Time` or `Contract`.
        </ResponseField>

        <ResponseField name="Job Title" type="string">
          Title of the job posting.
        </ResponseField>

        <ResponseField name="Apply URL" type="string">
          Direct link to the job application page.
        </ResponseField>

        <ResponseField name="Post Date" type="string">
          Date the job was posted in `YYYY-MM-DD` format.
        </ResponseField>

        <ResponseField name="Valid Through" type="string">
          Expiration date of the posting, if available.
        </ResponseField>

        <ResponseField name="City" type="string">
          City where the job is located.
        </ResponseField>

        <ResponseField name="Job Board" type="string">
          Source job board for the posting.
        </ResponseField>

        <ResponseField name="Job Description" type="string">
          Full description of the job.
        </ResponseField>

        <ResponseField name="Country" type="string">
          Country where the job is located.
        </ResponseField>

        <ResponseField name="Company Name" type="string">
          Name of the hiring company.
        </ResponseField>

        <ResponseField name="State" type="string">
          State, province, or region where the job is located.
        </ResponseField>

        <ResponseField name="Salary Offered" type="string">
          Salary information exactly as listed in the posting.
        </ResponseField>

        <ResponseField name="Logo URL" type="string">
          URL of the company logo image.
        </ResponseField>

        <ResponseField name="Is Remote" type="boolean">
          Whether the job is remote.
        </ResponseField>

        <ResponseField name="Job URL" type="string">
          URL of the original job listing.
        </ResponseField>

        <ResponseField name="Department Name" type="array">
          Inferred department values for the job.
        </ResponseField>

        <ResponseField name="Seniority Level" type="string">
          Inferred seniority level for the job.
        </ResponseField>

        <ResponseField name="Salary Currency" type="string">
          Salary currency code, such as `USD` or `EUR`.
        </ResponseField>

        <ResponseField name="Salary To" type="number">
          Upper bound of the salary range.
        </ResponseField>

        <ResponseField name="Salary From" type="number">
          Lower bound of the salary range.
        </ResponseField>

        <ResponseField name="Skills" type="array">
          Skills extracted from the job description.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="total" type="integer" required>
      Number of jobs returned in this response.
    </ResponseField>

    <ResponseField name="total_jobs_found" type="integer" required>
      Total number of jobs matching the criteria.
    </ResponseField>

    <ResponseField name="credits_used" type="integer" required>
      Credits consumed by this request.
    </ResponseField>

    <ResponseField name="credits_remaining" type="integer">
      Remaining credits for the API key.
    </ResponseField>

    <ResponseField name="search_after" type="array">
      Pagination cursor for the next page. `null` when there are no more results.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="error" type="string">
  Error message when applicable. `null` for successful responses with results.
</ResponseField>

<Note>
  All job object fields may be `null` if the source posting did not contain that information.
</Note>

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST 'https://api.sentrion.ai/api/v1/jobs-search/search' \
    -H 'Authorization: Bearer YOUR_API_KEY' \
    -H 'Content-Type: application/json' \
    -d '{
      "jobs_locations": [
        {
          "country": "United States",
          "state": "California",
          "city": "San Francisco"
        }
      ],
      "department": ["Engineering", "Software Engineering"],
      "industry": ["Computer Software", "Internet"],
      "job_keywords": {
        "title": ["software engineer", "backend developer"],
        "description": ["python", "kubernetes"],
        "mode": "or"
      },
      "exclude_job_keywords": {
        "title": ["intern", "junior"],
        "mode": "or"
      },
      "job_type": ["Full Time", "Contract"],
      "seniority_level": ["Mid Level"],
      "is_remote": true,
      "salary_data_available": true,
      "exclude_duplicates": true,
      "limit": 50
    }'
  ```

  ```python Python theme={null}
  import requests

  response = requests.post(
      'https://api.sentrion.ai/api/v1/jobs-search/search',
      headers={
          'Authorization': 'Bearer YOUR_API_KEY',
          'Content-Type': 'application/json'
      },
      json={
          'jobs_locations': [
              {
                  'country': 'United States',
                  'state': 'California',
                  'city': 'San Francisco'
              }
          ],
          'department': ['Engineering', 'Software Engineering'],
          'industry': ['Computer Software', 'Internet'],
          'job_keywords': {
              'title': ['software engineer', 'backend developer'],
              'description': ['python', 'kubernetes'],
              'mode': 'or'
          },
          'exclude_job_keywords': {
              'title': ['intern', 'junior'],
              'mode': 'or'
          },
          'job_type': ['Full Time', 'Contract'],
          'seniority_level': ['Mid Level'],
          'is_remote': True,
          'salary_data_available': True,
          'exclude_duplicates': True,
          'limit': 50
      }
  )

  data = response.json()
  ```

  ```javascript Node.js theme={null}
  const response = await fetch('https://api.sentrion.ai/api/v1/jobs-search/search', {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer YOUR_API_KEY',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      jobs_locations: [
        {
          country: 'United States',
          state: 'California',
          city: 'San Francisco'
        }
      ],
      department: ['Engineering', 'Software Engineering'],
      industry: ['Computer Software', 'Internet'],
      job_keywords: {
        title: ['software engineer', 'backend developer'],
        description: ['python', 'kubernetes'],
        mode: 'or'
      },
      exclude_job_keywords: {
        title: ['intern', 'junior'],
        mode: 'or'
      },
      job_type: ['Full Time', 'Contract'],
      seniority_level: ['Mid Level'],
      is_remote: true,
      salary_data_available: true,
      exclude_duplicates: true,
      limit: 50
    })
  });

  const data = await response.json();
  ```
</RequestExample>

<ResponseExample>
  ```json Success Response theme={null}
  {
    "success": true,
    "data": {
      "jobs": [
        {
          "Job Type": "Full Time",
          "Job Title": "Senior Software Engineer",
          "Apply URL": "https://careers.techcorp.com/apply/98765",
          "Post Date": "2026-03-15",
          "Valid Through": "2026-04-15",
          "City": "San Francisco",
          "Job Board": "Linkedin",
          "Job Description": "We are looking for a Senior Software Engineer to join our platform team.",
          "Country": "United States",
          "Company Name": "TechCorp Inc.",
          "State": "California",
          "Salary Offered": "$150,000 - $200,000/year",
          "Logo URL": "https://media.licdn.com/dms/image/C4D0BAQH/company-logo.png",
          "Is Remote": false,
          "Job URL": "https://www.linkedin.com/jobs/view/3847562910",
          "Department Name": ["Engineering"],
          "Seniority Level": "Mid Level",
          "Salary Currency": "USD",
          "Salary To": 200000.0,
          "Salary From": 150000.0,
          "Skills": ["Python", "Kubernetes", "AWS"]
        }
      ],
      "total": 1,
      "total_jobs_found": 2847,
      "credits_used": 1,
      "credits_remaining": 9998,
      "search_after": [1710500000000, 67890]
    },
    "error": null
  }
  ```

  ```json No Results Response theme={null}
  {
    "success": true,
    "data": {
      "jobs": [],
      "total": 0,
      "total_jobs_found": 0,
      "credits_used": 0,
      "credits_remaining": 10000,
      "search_after": null
    },
    "error": "No jobs found matching criteria."
  }
  ```

  ```json Validation Error (422) theme={null}
  {
    "detail": [
      {
        "msg": "published_after cannot be older than 6 months",
        "type": "value_error"
      }
    ]
  }
  ```
</ResponseExample>

## Pagination

This API uses `search_after` pagination.

<Steps>
  <Step title="Make the first request">
    Omit `search_after` or set it to `null`.
  </Step>

  <Step title="Read the cursor">
    If the response includes a non-null `search_after` array, more results are available.
  </Step>

  <Step title="Fetch the next page">
    Pass the returned `search_after` array into the next request unchanged.
  </Step>

  <Step title="Stop when complete">
    When `search_after` is `null`, you have reached the end of the result set.
  </Step>
</Steps>

<CodeGroup>
  ```python Python Pagination Example theme={null}
  import requests

  def fetch_all_jobs(api_key):
      all_jobs = []
      search_after = None

      while True:
          response = requests.post(
              'https://api.sentrion.ai/api/v1/jobs-search/search',
              headers={'Authorization': f'Bearer {api_key}'},
              json={
                  'jobs_locations': [{'country': 'United States'}],
                  'limit': 100,
                  'search_after': search_after
              }
          )

          payload = response.json()
          all_jobs.extend(payload['data']['jobs'])
          search_after = payload['data']['search_after']

          if not search_after:
              break

      return all_jobs
  ```

  ```javascript Node.js Pagination Example theme={null}
  async function fetchAllJobs(apiKey) {
    const allJobs = [];
    let searchAfter = null;

    while (true) {
      const response = await fetch('https://api.sentrion.ai/api/v1/jobs-search/search', {
        method: 'POST',
        headers: {
          'Authorization': `Bearer ${apiKey}`,
          'Content-Type': 'application/json'
        },
        body: JSON.stringify({
          jobs_locations: [{ country: 'United States' }],
          limit: 100,
          search_after: searchAfter
        })
      });

      const payload = await response.json();
      allJobs.push(...payload.data.jobs);
      searchAfter = payload.data.search_after;

      if (!searchAfter) {
        break;
      }
    }

    return allJobs;
  }
  ```
</CodeGroup>

## Rate Limits

This endpoint is rate-limited to **200 requests per minute** per API key.

## Constraints

* `published_after` defaults to 2 months before the request date when omitted.
* `published_after` cannot be older than 6 months before the request date.
* `published_before` defaults to the day after the request date when omitted.
* `published_after` must be earlier than `published_before`.
* Credits are charged only for new jobs within the current billing cycle.
