Rippling ATS Jobs Scraper avatar

Rippling ATS Jobs Scraper

Pricing

Pay per event

Go to Apify Store
Rippling ATS Jobs Scraper

Rippling ATS Jobs Scraper

Extract structured jobs from public Rippling ATS career boards and direct job URLs, including locations, departments, descriptions, dates, employment types, and pay.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Categories

Share

Export structured jobs from public Rippling-hosted career boards.

Provide employer board URLs, Rippling board slugs, or direct job URLs. The Actor paginates boards, deduplicates jobs by UUID, and can enrich every row from its public detail page.

It uses direct HTTP and server-rendered __NEXT_DATA__ rather than a browser. No login, cookies, proxy, or private API token are required.

What does Rippling ATS Jobs Scraper do?

The Actor turns public pages under ats.rippling.com into integration-ready dataset rows.

It supports:

  • one or many public Rippling career boards;
  • shorthand board slugs such as swag;
  • locale-prefixed URLs such as /de-DE/swag/jobs;
  • direct job posting URLs;
  • board pagination up to your requested item limit;
  • optional detail-page enrichment;
  • UUID-based deduplication across all inputs;
  • sanitized HTML and clean plain-text descriptions;
  • visible compensation when the employer supplies it.

The default dataset is suitable for CSV, JSON, Excel, API, webhook, and database workflows.

Who is this Rippling jobs extractor for?

Recruiters and staffing teams can monitor openings at target employers and route new roles into sourcing workflows.

Job aggregators can normalize Rippling-hosted vacancies alongside jobs from other ATS providers.

Sales intelligence teams can use department and location changes as hiring signals.

Labor-market analysts can collect recurring snapshots of roles, workplace modes, and geographies.

Developers and data teams can replace brittle page selectors with stable typed dataset rows.

Why use this Actor?

Rippling boards expose structured server-rendered state, but every employer has its own slug and job inventory. This Actor handles URL normalization, pagination, detail requests, retries, and output normalization in one run.

Unlike a generic webpage scraper, it understands Rippling job UUIDs, board metadata, location objects, department trees, and employment types.

Unlike a browser-heavy workflow, it avoids downloading images, fonts, and client-side application assets. That keeps runs fast and economical.

What Rippling job data can I extract?

FieldMeaning
jobIdStable Rippling job UUID
titlePublic role title
jobUrlCanonical public detail URL
boardUrlEmployer's canonical Rippling board URL
boardSlugRippling board identifier
boardTitlePublic career-board title
companyNameEmployer name shown by Rippling
departmentPrimary department
departmentTreeDetailed department hierarchy
locationsStructured location objects
locationNamesFlat location labels
countries, states, citiesGeographic dimensions
workplaceTypesRemote, hybrid, or on-site modes
languageListing language code
employmentTypeHuman-readable employment type
employmentTypeCodeRippling employment category
createdAtJob creation timestamp
companyDescriptionTextClean company description
roleDescriptionTextClean role description
companyDescriptionHtmlSanitized company HTML
roleDescriptionHtmlSanitized role HTML
compensationTextVisible salary or pay range
detailStatusEnrichment outcome
scrapedAtCollection timestamp

Fields unavailable on a particular employer's page are returned as null or an empty array.

How to scrape Rippling ATS jobs

  1. Open the Actor in Apify Console.
  2. Add one or more public Rippling board or job URLs.
  3. Optionally add board slugs for employers you monitor repeatedly.
  4. Choose the maximum number of unique jobs.
  5. Keep Include job details enabled when you need descriptions, dates, employment types, or compensation.
  6. Click Start.
  7. Open the Jobs dataset view.
  8. Export the results or connect them to your workflow.

A small first run with 5–20 jobs is useful for checking a new board before scaling up.

Input parameters

startUrls

An array of public HTTPS URLs on ats.rippling.com. Both board and direct job paths are accepted.

Examples:

https://ats.rippling.com/swag/jobs
https://ats.rippling.com/de-DE/swag/jobs
https://ats.rippling.com/astra/jobs/82d5d6a5-257f-440e-8b8f-d49af4ec3209

boardSlugs

Optional shorthand identifiers such as swag or astra. A slug is expanded to https://ats.rippling.com/<slug>/jobs. You can combine slugs with startUrls.

maxItems

Maximum unique jobs saved across every input. The default is 100 and the supported range is 1–10,000. Pagination stops when the limit is reached.

includeDetails

When true, fetches job pages for descriptions, employment metadata, dates, and compensation. When false, board rows are returned without those detail-only fields. Direct job URL inputs are always parsed as details.

maxConcurrency

Controls parallel detail requests from 1 to 10. The default of 5 balances throughput with respectful request volume.

Input example

{
"boardSlugs": ["swag", "astra"],
"maxItems": 50,
"includeDetails": true,
"maxConcurrency": 5
}

You may instead use request-list URLs:

{
"startUrls": [
{ "url": "https://ats.rippling.com/de-DE/swag/jobs" }
],
"maxItems": 20,
"includeDetails": false
}

Output example

A current enriched board run produces rows shaped like this:

{
"jobId": "6b1f2ec9-1206-4729-9d5e-75257bc5a06d",
"title": "Chief Financial Officer",
"jobUrl": "https://ats.rippling.com/swag/jobs/6b1f2ec9-1206-4729-9d5e-75257bc5a06d",
"boardUrl": "https://ats.rippling.com/swag/jobs",
"boardSlug": "swag",
"boardTitle": "Southwest Accessory Group",
"companyName": "Southwest Accessory Group",
"department": "Finance",
"locationNames": ["White Settlement, TX", "Haltom City, TX"],
"countries": ["United States"],
"states": ["Texas"],
"workplaceTypes": ["ON_SITE"],
"language": "en-US",
"employmentType": "Salaried, full-time",
"compensationText": "USD 225,000–280,000 per year (DFW)",
"detailStatus": "enriched",
"scrapedAt": "2026-07-26T03:00:00.000Z"
}

Descriptions are omitted from this snippet for readability but remain available in the dataset.

How much does it cost to extract Rippling ATS jobs?

This Actor uses pay-per-event pricing:

  • a small fee when each run starts;
  • a tiered fee for each unique job saved;
  • no charge for duplicate, rejected, or failed rows.

The current FREE-tier rates are $0.005 per run and $0.000041071 per job. Higher usage tiers receive lower per-job rates.

FREE-tier calculation examples:

WorkflowCharge formula
10 saved jobsone run-start event plus 10 per-job events
100 saved jobsone run-start event plus 100 per-job events
1,000 saved jobsone run-start event plus 1,000 per-job events

Apify plan usage and platform costs are separate from Actor event charges. Check the Console pricing panel for the active tier that applies to your account.

Pagination, limits, and deduplication

Board pages are requested in bounded batches. The Actor reads Rippling's advertised totalPages value and stops at exhaustion or maxItems.

Jobs are deduplicated by their stable Rippling UUID. If the same job appears through two boards or a board plus direct URL, only one row is saved.

The item limit applies globally across all inputs, not once per board. Input order therefore determines which boards are processed first when the limit is reached.

Detail enrichment and clean descriptions

Detail enrichment adds fields that board cards do not expose consistently:

  • role and company descriptions;
  • employment type;
  • creation date;
  • department hierarchy;
  • visible compensation.

The Actor removes styles, scripts, forms, iframes, metadata, and unsafe links from description HTML. It also exports normalized plain text for search and NLP workflows.

If one detail request fails, the useful board row is preserved with detailStatus set to detail_failed. Malformed board payloads fail clearly instead of pretending there are no jobs.

Automation and integration ideas

Recruiting pipeline

Schedule the Actor daily, compare UUIDs with the previous dataset, and send new roles to a recruiter or ATS.

Job aggregation

Normalize this dataset with outputs from Greenhouse, Workday, and other job-board Actors. Use jobId, companyName, and jobUrl as source dimensions.

Hiring-signal monitoring

Track counts by company, department, location, and workplace type. Alert account teams when a target employer opens roles in a strategic function.

Labor-market analysis

Store periodic snapshots in a warehouse. Analyze job creation dates, geographic expansion, remote-work patterns, and compensation availability.

Webhooks and integrations

Use Apify integrations to send completed datasets to Google Sheets, Make, Zapier, Slack, or a webhook endpoint.

Run through the Apify API with cURL

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~rippling-ats-jobs-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"boardSlugs": ["swag"],
"maxItems": 20,
"includeDetails": true
}'

To wait for completion and receive dataset items, use the synchronous dataset-items endpoint documented by Apify. Never commit your Apify token to source control.

Run with JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/rippling-ats-jobs-scraper').call({
boardSlugs: ['swag'],
maxItems: 20,
includeDetails: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Install the client with:

$npm install apify-client

Run with Python

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("automation-lab/rippling-ats-jobs-scraper").call(run_input={
"boardSlugs": ["swag"],
"maxItems": 20,
"includeDetails": True,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["title"], item["jobUrl"])

Install the client with:

$pip install apify-client

Use Rippling ATS Jobs Scraper through MCP

Add the Apify MCP server to Claude Code:

claude mcp add --transport http apify \
"https://mcp.apify.com?tools=automation-lab/rippling-ats-jobs-scraper"

Claude Desktop setup

Add this server to the Claude Desktop MCP configuration:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=automation-lab/rippling-ats-jobs-scraper"
}
}
}

Cursor setup

Use the same mcpServers.apify.url value in Cursor's MCP settings. Restart Cursor after saving the configuration.

VS Code setup

Add the same HTTP MCP server URL through VS Code's MCP server configuration or command palette. Confirm the automation-lab/rippling-ats-jobs-scraper tool is listed before running a prompt.

Example prompts:

  • “Extract up to 50 current roles from the Rippling board slug swag.”
  • “Enrich this public Rippling job URL and return its compensation and locations.”
  • “Compare departments and workplace types across the swag and astra boards.”

Responsible use and legality

The Actor reads publicly accessible employer job postings. It does not bypass authentication or collect application responses.

You are responsible for complying with applicable laws, website terms, robots guidance, and contractual obligations. Do not use results for unlawful discrimination, spam, or decisions that require human review under employment law.

Job descriptions can contain names, contact details, equal-opportunity statements, or other employer-provided text. Apply appropriate retention and access controls to exported data.

Limitations

  • Only public https://ats.rippling.com board and job URLs are supported.
  • Closed, unlisted, or deleted jobs may return HTTP 404.
  • Employers choose which fields to publish, so many values can be null.
  • Compensation extraction only reports visible employer-supplied text or pay-range data.
  • The Actor does not submit applications or scrape candidate information.
  • Upstream Next.js payload changes can require parser updates.
  • No automatic proxy or browser fallback is enabled.
  • maxItems is a global cap across all supplied boards.

Troubleshooting

“Only public ats.rippling.com URLs are supported”

Check that the input uses HTTPS and the exact ats.rippling.com hostname. Company marketing sites and other ATS vendors are intentionally rejected.

“Unsupported Rippling ATS URL path”

Use a board path ending in /jobs or a direct job path ending in /jobs/<UUID>. Locale prefixes such as /de-DE/ are supported.

A row has detailStatus: detail_failed

The list record was valid, but its detail request failed after bounded retries. Run again later or use the canonical jobUrl to confirm that the employer has not closed the posting.

A board returns zero rows

Open the same public board URL and confirm the employer currently advertises jobs. A valid empty board produces an empty dataset; an unrecognized payload causes an explicit run failure.

The run reached maxItems

Increase the limit or split employers into separate runs if you need complete coverage for every board.

Use source-specific Actors when you know the employer's ATS. Combine their normalized outputs for broader job-market coverage.

FAQ

Does the Actor need a Rippling account?

No. It only uses public employer career boards and job pages.

Does it use a browser or proxy?

No. The current implementation uses direct HTTPS and server-rendered structured data.

Can I supply multiple employers?

Yes. Add multiple URLs or board slugs. Results are deduplicated by job UUID and limited globally by maxItems.

Can I skip descriptions to reduce requests?

Yes. Set includeDetails to false for board inputs. Direct job URLs still return their public detail fields.

Does it find every job on the internet?

No. It extracts jobs from the specific public Rippling ATS inputs you provide. It is not a general web search engine.

Can I schedule recurring monitoring?

Yes. Use an Apify schedule and compare job UUIDs between runs. A webhook or automation platform can route newly observed records downstream.

What happens when Rippling changes its page structure?

Shape validation prevents false empty success. Inspect the run error and contact the Actor maintainer with the affected public URL.