SAP SuccessFactors Jobs Scraper
Pricing
Pay per event
SAP SuccessFactors Jobs Scraper
Extract normalized public vacancies from SAP SuccessFactors career sites, including requisition IDs, locations, descriptions, job attributes, and apply URLs.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
8 days ago
Last modified
Categories
Share
Collect public vacancies from SAP SuccessFactors Career Site Builder search and job pages.
The Actor turns employer career pages into normalized records with requisition IDs, titles, locations, posting dates, job attributes, full descriptions, canonical links, and apply links. It uses server-rendered public pages, so the normal workflow does not require a browser, login, or proxy.
What does SAP SuccessFactors Jobs Scraper do?
The Actor accepts public SuccessFactors /search/ and /job/ URLs.
For a search page it:
- applies optional keyword and location parameters;
- reads the public result count;
- follows
startrowpagination; - opens each canonical detail page;
- normalizes the vacancy;
- removes duplicates by tenant and requisition ID;
- saves matching jobs to the default dataset.
For an individual job URL it extracts that vacancy directly. The same keyword and location filters apply to direct URLs and discovered jobs.
Who is it for?
Recruiters and sourcing teams can monitor first-party employer openings.
Job aggregators can ingest normalized vacancy feeds from public career sites.
Sales-intelligence teams can detect hiring activity by team, country, or job category.
Labor-market analysts can collect posting dates, locations, and employment attributes.
Data engineers can send stable JSON records into warehouses and recurring workflows.
The Actor does not access applicant profiles, employee systems, or authenticated pages.
Why use this SuccessFactors extractor?
- Public HTTP extraction avoids browser overhead on supported tenants.
- Search pagination and detail extraction are included in one run.
- Employer requisition IDs are distinct from SuccessFactors page IDs.
- Full description text and HTML are both available.
- Canonical job and public apply URLs are retained.
- Limits apply across all input URLs, not separately to every tenant.
- Optional proxy use is explicit; there is no automatic paid residential fallback.
- The default dataset works with Apify integrations, API clients, and exports.
Career-site themes can vary, so fields not exposed by a tenant are returned as null.
What data can you extract?
| Field | Meaning |
|---|---|
tenant | Career-site hostname |
company | Employer or site name when discoverable |
requisitionId | Employer-facing requisition identifier |
sourceJobId | SuccessFactors page ID from the URL |
title | Vacancy title |
location | Full employer-provided location |
city | First location segment |
country | Country code when present |
postedDate | Displayed posting date |
category | Work area, department, or category |
employmentType | Employment or shift type |
careerLevel | Career status or seniority |
travel | Expected travel requirement |
descriptionText | Normalized plain-text description |
descriptionHtml | Original description HTML |
searchUrl | Search page that discovered the job |
jobUrl | Canonical public detail URL |
applyUrl | Public application URL |
scrapedAt | ISO 8601 extraction timestamp |
Getting started
- Open the Actor in Apify Console.
- Add one or more public SuccessFactors search or job URLs.
- Optionally enter a keyword or location.
- Choose whether to include full descriptions.
- Set a small
maxItemsvalue for your first run. - Click Start.
- Open the Jobs dataset view.
- Export results as JSON, CSV, Excel, XML, or RSS.
A working starter input is prefilled in the Console.
Input parameters
startUrls
Public HTTPS SuccessFactors Career Site Builder URLs.
Supported paths begin with /search/ or /job/.
Search pages are paginated automatically.
Job pages are extracted directly.
keywords
Optional case-insensitive keyword filter.
For search pages it sets the source q parameter.
Every resulting record is also checked against its title and description.
location
Optional case-insensitive location filter.
For search pages it sets locationsearch.
Every resulting record is also checked against normalized location text.
includeDescription
Defaults to true.
When disabled, descriptionText and descriptionHtml are null.
Detail pages are still read because they contain requisition and job attributes.
maxItems
Maximum matching unique jobs saved across the run. Allowed range: 1 to 10,000. The Actor stops scheduling detail requests when this limit is reached.
proxyConfiguration
Optional Apify Proxy settings.
Direct requests are used by default and are proven on jobs.sap.com.
Enable a proxy only when a particular tenant or network requires it.
Proxy traffic can add platform cost.
Example input: keyword search
{"startUrls": [{ "url": "https://jobs.sap.com/search/" }],"keywords": "developer","includeDescription": true,"maxItems": 25}
Example input: source-specific search
{"startUrls": [{ "url": "https://jobs.sap.com/search/?q=data&locationsearch=France" }],"includeDescription": true,"maxItems": 20}
Example input: one job
{"startUrls": [{"url": "https://jobs.sap.com/job/Levallois-Perret-Datacenter-Operations-Senior-Specialist-92300/1393383733/"}],"maxItems": 1}
Output example
This abbreviated record reflects the current public SAP tenant structure:
{"tenant": "jobs.sap.com","company": "SAP","requisitionId": "452628","sourceJobId": "1393383733","title": "Datacenter Operations Senior Specialist","location": "Levallois-Perret, FR, 92300","city": "Levallois-Perret","country": "FR","postedDate": "Jul 10, 2026","category": "Software-Development Operations","employmentType": "Regular Full Time","careerLevel": "Professional","travel": "0 - 10%","descriptionText": "We help the world run better...","descriptionHtml": "<p><strong>We help the world run better</strong>...</p>","searchUrl": "https://jobs.sap.com/search/?q=data&locationsearch=France","jobUrl": "https://jobs.sap.com/job/Levallois-Perret-Datacenter-Operations-Senior-Specialist-92300/1393383733/","applyUrl": "https://jobs.sap.com/talentcommunity/apply/1393383733/?locale=en_US","scrapedAt": "2026-07-26T03:15:00.000Z"}
Descriptions and dates can change when the employer edits a vacancy.
How much does it cost to scrape SuccessFactors jobs?
The Actor uses pay-per-event pricing. A run start costs $0.003. On the FREE tier, each saved job costs $0.000041071. Higher platform tiers receive progressively lower per-job prices. Rejected, duplicate, failed, or filtered-out jobs are not charged as result events.
Example FREE-tier Actor charges:
| Saved jobs | Start | Jobs | Total |
|---|---|---|---|
| 10 | $0.003 | $0.000411 | $0.003411 |
| 100 | $0.003 | $0.004107 | $0.007107 |
| 1,000 | $0.003 | $0.041071 | $0.044071 |
Optional proxy usage and Apify platform compute are separate account usage. Use direct mode unless a tenant actually needs a proxy.
Pagination, limits, and deduplication
SuccessFactors search pages commonly return 25 rows per page.
The Actor follows startrow offsets until the source is exhausted or maxItems is reached.
A stable key combines the tenant hostname and employer requisition ID. If the same vacancy appears in multiple input searches, it is saved once.
Filtered-out jobs do not consume maxItems.
A narrow filter may therefore require reading more source pages.
Recurring monitoring workflows
Create an Apify schedule to run the Actor daily or weekly. Send the default dataset to Google Sheets, webhooks, Make, Zapier, or a data warehouse.
Useful recurring workflows include:
- monitor engineering hiring in selected countries;
- detect new sales openings at target employers;
- build a first-party job aggregation feed;
- compare work-area demand over time;
- enrich company-growth signals with vacancy counts;
- alert recruiters when matching requisitions appear.
Downstream systems should use tenant + requisitionId as the durable business key.
Use the Actor through the API
Replace APIFY_TOKEN with your token.
cURL
curl -X POST \"https://api.apify.com/v2/acts/automation-lab~sap-successfactors-jobs-scraper/runs?token=APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"startUrls":[{"url":"https://jobs.sap.com/search/"}],"keywords":"cloud","maxItems":10}'
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/sap-successfactors-jobs-scraper').call({startUrls: [{ url: 'https://jobs.sap.com/search/' }],keywords: 'cloud',maxItems: 10,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python
from apify_client import ApifyClientclient = ApifyClient("APIFY_TOKEN")run = client.actor("automation-lab/sap-successfactors-jobs-scraper").call(run_input={"startUrls": [{"url": "https://jobs.sap.com/search/"}],"keywords": "cloud","maxItems": 10,})items = client.dataset(run["defaultDatasetId"]).list_items().itemsprint(items)
Use with Apify MCP
Add the Actor to Claude Code:
claude mcp add --transport http apify \"https://mcp.apify.com?tools=automation-lab/sap-successfactors-jobs-scraper"
Claude Desktop, Cursor, and VS Code setup
Use this equivalent MCP configuration in Claude Desktop, Cursor, or VS Code:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=automation-lab/sap-successfactors-jobs-scraper"}}}
Example prompts:
- “Collect 20 public SAP cloud jobs and summarize countries.”
- “Run the SuccessFactors scraper for this search URL and return requisition IDs.”
- “Fetch this job page and provide its public apply URL.”
Reliability and responsible retries
Requests use a 30-second timeout. Transient network errors, HTTP 429, and server errors are retried with bounded backoff. Permanent 4xx responses are not retried repeatedly.
The Actor validates HTML shape rather than treating a challenge page as an empty result. An invalid URL or unrecognized page causes a failed run with a diagnostic message. A valid search with no matching jobs succeeds with an empty dataset.
Limitations
- This release targets public SAP SuccessFactors Career Site Builder HTML.
- Private employee and applicant portals are out of scope.
- Tenant themes can omit optional semantic fields.
- Search ranking and availability are controlled by each employer.
- Posted dates are preserved in the source display format.
- City and country parsing is best-effort for employer-defined location strings.
- An employer can remove a job between search and detail requests.
- JavaScript-only custom career sites outside the standard public surface may not work.
- The Actor does not submit applications.
Troubleshooting
The run says the start URL is invalid.
Use an HTTPS URL whose path begins with /search/ or /job/.
Do not submit a company homepage or authenticated candidate portal.
The dataset is empty.
Check whether the source search itself has results.
Then remove or broaden keywords and location.
Direct job URLs are subject to the same filters.
A tenant returns an HTTP or page-shape error. Confirm the job is publicly accessible in a private browser window. Try an Apify datacenter proxy if the tenant restricts your network. Do not enable residential proxy traffic without understanding its cost.
Some optional fields are null. The employer did not expose those fields in its public page layout. Core records still require a title, description container, and requisition or source ID.
Legal and ethical use
Scrape only public job data you are authorized to collect. Follow the source website’s terms, robots guidance, and applicable laws. Avoid excessive schedules and limits that create unnecessary load. Do not use job data for unlawful discrimination, spam, or privacy-invasive profiling.
This Actor does not bypass authentication or collect applicant data. You are responsible for your inputs, retention policy, and downstream use.
Related Automation Lab Actors
- Greenhouse Jobs Scraper for Greenhouse-hosted boards.
- Workable Jobs Scraper for Workable career pages.
- Ashby Jobs Scraper for Ashby-hosted openings.
Use the Actor matching the employer’s ATS rather than treating different career-site formats as interchangeable.
FAQ
Does it require a SuccessFactors account? No. It reads public employer career pages only.
Does it require a browser? No on the proven Career Site Builder route. Server-rendered HTML keeps runs lightweight.
Can I scrape several tenants in one run?
Yes. Add multiple public search or job URLs; maxItems applies across all of them.
Can I disable descriptions?
Yes. Set includeDescription to false; description fields become null.
Are filtered-out jobs charged? No. The per-job event is emitted only immediately before a matching unique record is saved.
Will it apply for jobs? No. It returns the public apply URL but never submits an application.
Can I export the results? Yes. Use Apify dataset exports or integrations for JSON, CSV, Excel, XML, RSS, and more.