> ## 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 (6 Years Historical)

> Search up to 6 years of historical jobs across all companies. Requires special access.

<Warning>
  This endpoint requires **special access**. Please [contact us](mailto:support@sentrion.ai) to enable historical data on your API key.
</Warning>

Search up to 6 years of historical 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 years 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: `100`.
</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/v3/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/v3/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/v3/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/v3/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/v3/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 **100 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 years 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.
