Novartis APInovartis.com ↗
Search Novartis job openings by keyword, country, division, and function. Retrieve full job descriptions, requisition IDs, and Workday application URLs.
What is the Novartis API?
This API provides 5 endpoints for searching and retrieving Novartis career listings directly from novartis.com. Use search_jobs to run keyword queries filtered by country, division, posted date, and functional area, then call get_job_details to pull the full description, requisition ID, and direct Workday application URL for any individual position. Three supporting endpoints return the complete set of valid filter codes for locations, divisions, and functions.
curl -X GET 'https://api.parse.bot/scraper/ebe1fe84-9998-47b4-b93a-e978446d7823/get_job_details?url=https%3A%2F%2Fwww.novartis.com%2Fcareers%2Fcareer-search%2Fjob%2Fdetails%2Freq-10078298-director-business-excellence-lead-oncology' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace novartis-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
from parse_apis.novartis_careers_api import Novartis, PostedDate
novartis = Novartis()
# List available divisions to pick one for filtering
for division in novartis.divisionoptions.list():
print(division.name, division.value)
# Search for recent jobs in Oncology
for job in novartis.jobs.search(division="DIV_ON", posted_date=PostedDate.THIS_MONTH):
print(job.title, job.location, job.posted_date)
# Drill into full details for the first match
detail = job.details.get()
print(detail.identifier, detail.apply_url)
break
Retrieve full details of a specific Novartis job posting by its URL. Returns the requisition ID, title, full description text, and the direct Workday application URL. Each job page is language-specific; the URL suffix determines the locale of the returned description.
| Param | Type | Description |
|---|---|---|
| urlrequired | string | The direct URL to the job detail page on novartis.com (e.g. https://www.novartis.com/careers/career-search/job/details/req-10078991-data-scientist-fr-fr). |
{
"type": "object",
"fields": {
"title": "string, the job title",
"apply_url": "string, the direct Workday application URL",
"identifier": "string, the job requisition ID (e.g. REQ-10078991)",
"description": "string, the full job description text"
},
"sample": {
"data": {
"title": "Data Scientist",
"apply_url": "https://novartis.wd3.myworkdayjobs.com/fr-FR/Novartis_Careers/job/Barcelona-Gran-Va/Data-Scientist_REQ-10078991-1",
"identifier": "REQ-10078991",
"description": "Obtenez de la vapeur pour les equipes bpA avec un support analytique..."
},
"status": "success"
}
}About the Novartis API
Searching Jobs
The search_jobs endpoint accepts an optional query string matched against job titles and descriptions, along with four filter parameters: country, division, functional_area, and posted_date. Filters take codes returned by the corresponding lookup endpoints — for example, LOC_US for the United States or DIV_ON for Oncology. Results are paginated with 0-indexed page numbers; each response includes jobs (an array of listing objects), current_page, and total_results so you can walk through all pages. Combining multiple filters narrows results aggressively — some filter combinations will return zero matches.
Job Detail
Once you have a job URL from search_jobs, pass it to get_job_details to retrieve the full record. The response includes the job title, the requisition identifier (e.g. REQ-10078991), the complete description text, and the apply_url pointing directly to the Workday application form. Job pages are locale-specific — the URL suffix controls which language the returned description is in.
Filter Lookup Endpoints
list_job_locations, list_job_divisions, and list_job_functions each return an items array of objects with name (human-readable label) and value (the filter code to pass to search_jobs). These lists are exhaustive — every code the search accepts is present. Retrieve them once and cache them to avoid repeated calls when building filter UIs or running batch queries across multiple divisions or geographies.
The Novartis API is a managed, monitored endpoint for novartis.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when novartis.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official novartis.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Monitor new Novartis postings in a specific country by polling
search_jobswith acountrycode andposted_dateset to today or this week. - Build a Novartis job alert system that filters by
divisionandfunctional_areato surface relevant roles for candidates in pharma or oncology. - Aggregate full job descriptions via
get_job_detailsto analyze required skills and qualifications across Novartis R&D openings. - Extract
apply_urlfields from job listings to create a direct-link digest of open positions for recruiting dashboards. - Enumerate all valid country and division filter codes with
list_job_locationsandlist_job_divisionsto build a structured browsing UI. - Track total open headcount by division using the
total_resultsfield returned bysearch_jobswith eachdivisioncode. - Cross-reference Novartis requisition IDs from
identifierfields against internal ATS records for competitive talent intelligence.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Novartis offer an official public developer API for job listings?+
What does `search_jobs` return for each listing, and how do I get the full description?+
search_jobs returns a summary object per job: title, url, business_function, location, site, and posted_date. The full description text is not included in search results — you need to pass the url to get_job_details to retrieve the complete description, identifier, and apply_url.Are there any quirks with the filter codes in `search_jobs`?+
list_job_locations, list_job_divisions, or list_job_functions before using them. The posted_date parameter uses numeric strings (1–4) rather than ISO dates, where 1 means today and 4 means this month. Stacking multiple filters can return zero results if no postings match all criteria simultaneously.Does the API cover salary information or internal job grades for Novartis positions?+
Can I retrieve job listings for all Novartis divisions in a single call?+
search_jobs applies one division code per request. To aggregate across all divisions, call list_job_divisions to get every division code, then iterate through them in separate search_jobs calls. The total_results field in each response tells you how many positions exist per division.