BrightSpring (careers-brightspring.icims.com) and Concentra (careers-concentrainc.icims.com) take applications through iCIMS. iCIMS publishes no public jobs API for its careers portals, but every portal serves its list as HTML, and its robots.txt closes only the referral, login, candidate and connect pages.
curl -s "https://careers-brightspring.icims.com/jobs/search?ss=1&in_iframe=1" \
| grep -o 'Page [0-9]* of [0-9]*'
That prints Page 1 of 40. Four things to know, measured on 2026-10-27 at one request every five seconds.
1. Ask for the iframe's page
The careers page is a wrapper around an iframe. Without in_iframe=1 the same address returns 11 KB and no jobs; with it, 168 KB and 50 jobs:
curl -s "https://careers-brightspring.icims.com/jobs/search?ss=1&in_iframe=1" \
| grep -o '/jobs/[0-9]*/[^"]*/job' | sort -u | wc -l
2. 50 a page, paged by pr
pr=0 is the first page and pr=1 the second, up to the page count the list prints. Some portals use a layout of 10 a page, so read the count rather than assuming one.
3. The list has no date, the sitemap does
BrightSpring's list carries no posting date. Its /sitemap.xml lists every job, 1,966 that day, each with a <lastmod>:
curl -s "https://careers-brightspring.icims.com/sitemap.xml" \
| grep -o '<loc>[^<]*/job</loc>' | wc -l
Join the two on the job number in the link.
4. You cannot guess the portal's name
Concentra's portal is careers-concentrainc, 24 pages of jobs. careers-concentra.icims.com answers 404. The host label is whatever the employer chose, so a list of companies needs a list of verified portal names, not a rule.
Hosted
Company Career Page Jobs Scraper on Apify reads BrightSpring, Concentra and the other iCIMS employers by name from a map of verified portals, pages through the iframe list and adds the sitemap's date to each job. iCIMS Jobs API holds the jobs already collected from 1,320 portals. Every other system's public endpoint, with a tested curl, is in job-board-apis.
Top comments (0)