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
}'
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()
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();
{
"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
}
{
"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."
}
{
"detail": "Invalid Idempotency-Key or request identity."
}
{
"detail": "The complete new-job result is unaffordable; no jobs were delivered or charged."
}
{
"detail": "The operation key has changed request intent or its billing period has expired."
}
{
"detail": "<error detail>"
}
{
"detail": [
{
"msg": "published_after cannot be older than 6 months",
"type": "value_error"
}
]
}
{
"detail": "Rate limit exceeded; retry after the indicated delay."
}
Endpoints
Jobs Search
Search for jobs across all companies with location, industry, keyword, job board, and salary filters
POST
/
api
/
v1
/
jobs-search
/
search
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
}'
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()
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();
{
"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
}
{
"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."
}
{
"detail": "Invalid Idempotency-Key or request identity."
}
{
"detail": "The complete new-job result is unaffordable; no jobs were delivered or charged."
}
{
"detail": "The operation key has changed request intent or its billing period has expired."
}
{
"detail": "<error detail>"
}
{
"detail": [
{
"msg": "published_after cannot be older than 6 months",
"type": "value_error"
}
]
}
{
"detail": "Rate limit exceeded; retry after the indicated delay."
}
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.
For the
Authentication
This endpoint requires a Bearer token. Enter your API key in the authorization field above — theBearer prefix is added automatically.
New jobs cost one credit each; previously paid jobs and empty results are available at zero or negative balance.
Request Headers
string
Optional stable retry key for idempotent requests. Format:
use_v1_ followed by 1–121 ASCII letters, digits, underscores, or hyphens. Invalid keys return 400.Reuse the same key and unchanged request body when retrying this endpoint.
Generate a new key for a new search or page of results (search_after). Reusing
a key with changed request intent or an expired billing period returns 409.
See idempotency best practices."Idempotency-Key": "use_v1_0123456789abcdef0123456789abcdef"
Request Body
Location Filters
array
array
boolean
Filter by remote status.
true returns only remote jobs, false returns only non-remote jobs, and null includes both.boolean
Filter for jobs that include country information.
Date Filters
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.string
End date for the search in
YYYY-MM-DD format. If omitted, the API defaults this to the day after the request date.Job Filters
array
Filter by department.
Show Accepted values
Show Accepted values
AccountingAdministrationArts and DesignBusiness DevelopmentCommunicationsCommunity and Social ServicesComplianceCorporate AffairsCorporate StrategyCustomer ExperienceCustomer SuccessCustomer SupportData AnalyticsDesignEducationEngineeringFacilities ManagementFinanceGovernment RelationsHealthcare ServicesHuman ResourcesInformation TechnologyLegalMarketingOperationsProduct ManagementProject ManagementPublic RelationsPurchasingQuality AssuranceReal EstateResearchSalesSecuritySoftware EngineeringSupply ChainSupportWeb Development
array
Filter by industry. Values are case-insensitive.
Show Accepted values
Show Accepted values
AccountingAirlines/AviationAlternative Dispute ResolutionAlternative MedicineAnimationApparel & FashionArchitecture & PlanningArts and CraftsAutomotiveAviation & AerospaceBankingBiotechnologyBroadcast MediaBuilding MaterialsBusiness Supplies and EquipmentCapital MarketsChemicalsCivic & Social OrganizationCivil EngineeringCommercial Real EstateComputer & Network SecurityComputer GamesComputer HardwareComputer NetworkingComputer SoftwareConstructionConsumer ElectronicsConsumer GoodsConsumer ServicesCosmeticsDairyDefense & SpaceDesignE-LearningEducation ManagementElectrical/Electronic ManufacturingEntertainmentEnvironmental ServicesEvents ServicesExecutive OfficeFacilities ServicesFarmingFinancial ServicesFine ArtFisheryFood & BeveragesFood ProductionFund-RaisingFurnitureGambling & CasinosGlass, Ceramics & ConcreteGovernment AdministrationGovernment RelationsGraphic DesignHealth, Wellness and FitnessHigher EducationHospital & Health CareHospitalityHuman ResourcesImport and ExportIndividual & Family ServicesIndustrial AutomationInformation ServicesInformation Technology and ServicesInsuranceInternational AffairsInternational Trade and DevelopmentInternetInvestment BankingInvestment ManagementJudiciaryLaw EnforcementLaw PracticeLegal ServicesLegislative OfficeLeisure, Travel & TourismLibrariesLogistics and Supply ChainLuxury Goods & JewelryMachineryManagement ConsultingMaritimeMarket ResearchMarketing and AdvertisingMechanical or Industrial EngineeringMedia ProductionMedical DevicesMedical PracticeMental Health CareMilitaryMining & MetalsMobile GamesMotion Pictures and FilmMuseums and InstitutionsMusicNanotechnologyNewspapersNonprofit Organization ManagementOil & EnergyOnline MediaOutsourcing/OffshoringPackage/Freight DeliveryPackaging and ContainersPaper & Forest ProductsPerforming ArtsPharmaceuticalsPhilanthropyPhotographyPlasticsPolitical OrganizationPrimary/Secondary EducationPrintingProfessional Training & CoachingProgram DevelopmentPublic PolicyPublic Relations and CommunicationsPublic SafetyPublishingRailroad ManufactureRanchingReal EstateRecreational Facilities and ServicesRenewables & EnvironmentResearchRestaurantsRetailSecurity and InvestigationsSemiconductorsShipbuildingSoftware DevelopmentSporting GoodsSportsStaffing and RecruitingSupermarketsTelecommunicationsTextilesThink TanksTobaccoTranslation and LocalizationTransportation/Trucking/RailroadUtilitiesVenture Capital & Private EquityVeterinaryWarehousingWholesaleWine and SpiritsWirelessWriting and EditingReligious Institutions
array
Filter by job type.
Show Accepted values
Show Accepted values
Full TimePart TimeContractInternshipVolunteer
array
Filter by seniority level.
Show Accepted values
Show Accepted values
Entry LevelMid LevelExecutive Level
boolean
Set
true to return only jobs that include salary data. false, omitted or null: no salary filter — all jobs are returned.boolean
Recruiting-agency filter.
false: exclude jobs posted by known recruiting agencies — jobs from unclassified employers are kept. true: return only agency-posted jobs. Omitted or null: no filter.Keyword Filters
object
object
array
Bracketed keyword logic, for queries
Require both words in the title, and either technology in the description:Match either of two role profiles in a single call:
job_keywords cannot express: requiring two
separate words in the same job title, or matching several role profiles in one call.Each item is a group. A group combines its title block, its description block
and any nested groups using its own mode. Every group in the top-level array must
match, so the array itself behaves as an AND.Show Group properties
Show Group properties
"advanced_job_keywords": [
{
"mode": "and",
"title": { "mode": "and", "terms": ["Senior", "Engineer"] },
"description": { "mode": "or", "terms": ["Python", "Go"] }
}
]
"advanced_job_keywords": [
{
"mode": "or",
"groups": [
{
"mode": "and",
"title": { "mode": "and", "terms": ["Senior", "Backend"] },
"description": { "mode": "or", "terms": ["Python", "Go", "Java"] }
},
{
"mode": "and",
"title": { "mode": "and", "terms": ["Frontend", "Architect"] },
"description": { "mode": "or", "terms": ["React", "Vue", "Angular"] }
}
]
}
]
array
The same structure, applied as an exclusion. Jobs matching a group are removed from
the results.
"advanced_exclude_job_keywords": [
{
"mode": "or",
"title": { "mode": "or", "terms": ["Intern", "Junior", "Entry Level"] }
}
]
A group describes a set of jobs to remove, so its
mode applies before the removal.
With "mode": "and" the group removes only jobs matching every condition in it:
{"mode": "and", "title": {"mode": "and", "terms": ["Intern", "Junior"]}} removes
titles containing both words and keeps “Junior Engineer”. To drop jobs matching any
of the terms, use "mode": "or" as in the example above.Job Board Filters
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.array
Only include results from specific job boards. Values are case-insensitive.
Show Accepted values
Show Accepted values
JobstreetcareeronestopLinkedinindeedcareerbuildercareerjeteurojobsglassdoorsimplyhiredJobsmonsterneuvoojobbankEURESTalentpoleemploipracticelinkTheladdersJobsintrucksdicefounditseamanjobsiteJobsdbGraduatelandnurseAdzunalinkupcareeroneitjobboardworkcenterseeklearn4goodcomputrabajokijijitimesjobsmycareersfuturehigheredjobsJobscentralJorashineEfinancialcareersgrabjobsziprecruiterUSAjobsnet-empregosnationalevacaturebankduunitoriNaukrifreshersworldhoscooilandgasjobsearchretailjobswebledigajobbjobsinlisbonarbeitsagenturreedtotaljobHospitalityonlinecathohiristjobbsafariclearancejobsTrademeWayupjobsearchGovernmentjobsbaytPnetcareercrossclearedjobsXINGnaukrigulftechnojobshotelcareergumtreealertaempregointernshipsHospitalrecruitingliepinzhaopinCareerrookieMiracleworkerscareervaultJobbkktecolocoMoneyjobsjobalineAimbridgehospitalitywuzzufgulftalentbrightermondaySologigIdealistcwjobsLavoraconnoijobbermanJobtopgunFejobsseasonaljobsworkinstartupsNRFCvmarketmonstergulfssmhealthcareersbehancebumeranjoobleworkinretailremoteokWebbjobbjobzillaBjadzuna_com_auAspendentaljobsMudahfastjobsechinacitiesEmpregoxlvicsecsinthecityIimjobsnaukri_comhiredlymarocannoncesStackoverflowEducationweekjobsRetailchoicearbetsformedlingenfashionjobsJobxmommyjobsonlineaffiliatesInternshalaWorkinnursingjobsaussieemploymentCatererthefountaingroupworkatastartupjournalismjobsNavalnuclearlabtransdevnaJobthaiprobonoaustraliaWorkintheraphyjobsETSDentalEmpregoFecareersdribbbleidealist_orgGoinhousegrapevinejobslettucejobsChinahrweworkremotelyjobsdb_comjobs_caLkjordantotalhirehiredchinapnet_co_zaappstackremotivejobx_com_aufoundationlistdaijobhaysaimbridgehospitality_comcarga de trabalhosbonsempregosspecialcounselturnerindustriesapplicantproSportspeopleeuremotejobsHeadhunterappvaultlocalwiseThorindustriesboards.greenhouse.ioEecentreskillinvestretailchoice_comWdhsLandingAwardingCaresarkariresultwhcgmoneyjobs_comJOBITTapaserviceshomefromcollegeheadagentvrsexpatjobschinajobs_deErcjobsngshirewsetglobalmiracleworkers_comdigitalentahrccsologig_comsthgrampiansamesystemscareerrookie_comeghscare_comlkjordan_combeyondretailararatawarding_orgercjobs_comworkinnursingjobs_combeekeeperheadhunter_comworkintheraphyjobs_comBoardsnavalnuclearlab_energy_govleverempregosonlinebuscojobs
array
Exclude results from specific job boards. Uses the same accepted values shown in
include_job_boards.Other Options
boolean
default:"true"
Remove duplicate job listings from results.
integer
default:"100"
Maximum number of results to return. Maximum:
100. We recommend 10–100 per page. Use search_after to request the next page.array
Pagination cursor from a previous response. Pass the array exactly as returned, in the form
[timestamp, cursor_id].Response
boolean
required
true if the search completed successfully.object
The search response payload. A failed search can still include a data object with empty results. Check
success and error before using the results.Show Data object properties
Show Data object properties
array
required
List of job objects that match the request.
Show Job object properties
Show Job object properties
string
Type of employment, such as
Full Time or Contract.string
Title of the job posting.
string
Direct link to the job application page.
string
Date the job was posted in
YYYY-MM-DD format.string
Expiration date of the posting, if available.
string
City where the job is located.
string
Source job board for the posting.
string
Full description of the job.
string
Country where the job is located.
string
Name of the hiring company.
string
State, province, or region where the job is located.
string
Salary information exactly as listed in the posting.
string
URL of the company logo image.
boolean
Whether the job is remote.
string
URL of the original job listing.
array
Inferred department values for the job.
string
Inferred seniority level for the job.
string
Salary currency code, such as
USD or EUR.number
Upper bound of the salary range.
number
Lower bound of the salary range.
array
Skills extracted from the job description.
integer
required
Number of jobs returned in this response.
integer
required
Total number of jobs matching the criteria.
integer
required
Credits consumed by this request.
integer
Remaining credits for the API key.
array
Pagination cursor for the next page.
null when there are no more results.string
Error message when applicable.
null for successful responses with results.All job object fields may be
null if the source posting did not contain that information.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
}'
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()
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();
{
"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
}
{
"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."
}
{
"detail": "Invalid Idempotency-Key or request identity."
}
{
"detail": "The complete new-job result is unaffordable; no jobs were delivered or charged."
}
{
"detail": "The operation key has changed request intent or its billing period has expired."
}
{
"detail": "<error detail>"
}
{
"detail": [
{
"msg": "published_after cannot be older than 6 months",
"type": "value_error"
}
]
}
{
"detail": "Rate limit exceeded; retry after the indicated delay."
}
service_unavailable case, the search or service is temporarily
unavailable and nothing was charged. Retry with the same Idempotency-Key.
A 429 response means no jobs were delivered or charged. It includes Retry-After
(seconds to wait), Idempotency-Key (the effective operation key), and
X-Request-ID (a UUID for this HTTP attempt). Retry after the indicated delay
with the same request body and idempotency key. Reuse a caller-supplied key to
recover a lost response within the billing period.
Pagination
This API usessearch_after pagination.
1
Make the first request
Omit
search_after or set it to null.2
Read the cursor
If the response includes a non-null
search_after array, more results are available.3
Fetch the next page
Pass the returned
search_after array into the next request unchanged.4
Stop when complete
When
search_after is null, you have reached the end of the result set.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
}
)
response.raise_for_status()
payload = response.json()
if not payload['success']:
raise RuntimeError(payload.get('error') or 'Search failed')
all_jobs.extend(payload['data']['jobs'])
search_after = payload['data']['search_after']
if not search_after:
break
return all_jobs
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
})
});
if (!response.ok) {
throw new Error(`Search failed with HTTP ${response.status}`);
}
const payload = await response.json();
if (!payload.success) {
throw new Error(payload.error || 'Search failed');
}
allJobs.push(...payload.data.jobs);
searchAfter = payload.data.search_after;
if (!searchAfter) {
break;
}
}
return allJobs;
}
Rate Limits
This endpoint is rate-limited to 200 requests per minute per API key.Constraints
published_afterdefaults to 2 months before the request date when omitted.published_aftercannot be older than 6 months before the request date.published_beforedefaults to the day after the request date when omitted.published_aftermust be earlier thanpublished_before.- Credits are charged only for new jobs within the current billing cycle.
