Oracle Taleo Career Section Jobs Scraper avatar

Oracle Taleo Career Section Jobs Scraper

Pricing

from $0.75 / 1,000 results

Go to Apify Store
Oracle Taleo Career Section Jobs Scraper

Oracle Taleo Career Section Jobs Scraper

Collects postings from an Oracle Taleo career section on taleo.net through the same JSON job-board endpoint the search page uses. Returns the requisition ID, title, department, employmentType, postedAt, a jobdetail.ftl apply link, and the location split into city, state and country.

Pricing

from $0.75 / 1,000 results

Rating

0.0

(0)

Developer

String

String

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

15 days ago

Last modified

Share

What does Taleo Job Board Scraper do?

Oracle Taleo career sections are old, and they render nothing useful into their HTML. jobsearch.ftl is a shell whose results table is filled in afterwards by a JSON job-board endpoint. This Actor reads that endpoint, which is both the only complete source and the exact one the page itself uses.

Give it a career-section URL such as https://drhorton.taleo.net/careersection/2/jobsearch.ftl and it returns the section's postings with requisition id, title, department, employment type, posted date, apply link, and the location split into city, state and country.

Opening a section costs two things at once. The shell fetch supplies the portal id the endpoint refuses to answer without, and it also supplies the results table's column headers, which is the part that matters more than it sounds:

  • Taleo returns a posting as a bare column array. What each position means is per-section configuration, not a schema. One tenant publishes five columns, another two, and they share no ordering.
  • The headers read from the shell are what make that array legible. department, employmentType and postedAt are claimed only when the header list lines up one-to-one with the payload. Where it does not, those fields stay null rather than being filled from the wrong column.

After that, results come one page at a time at the section's own page size, 25 by default. Pages are flattened across every section in the input, so one slow career section cannot hold up the run.

No Taleo account, login or cookie is used.

What data does it extract?

FieldTypeDescription
jobIdstringTaleo's requisition id. Stable, so use it to de-duplicate and diff
titlestringThe posting title, taken from the column the payload marks as the linked one
companystringAlways null. Taleo career sections publish no company display name
tenantstringThe Taleo tenant, read from the host, for example drhorton
locationstringThe section's own location node, verbatim, for example US-TX-Arlington. Several locations join with ;
citystringResolved from the location node. null when the posting lists more than one location
statestringUS state or Canadian province, matched against a closed vocabulary
countrystringISO code, matched against a closed vocabulary of names and codes
isRemotebooleantrue when the location or the title names remote, virtual, telecommute or work from home
departmentstringThe section's category column: Job Field, Job Category, Department, Function and similar
employmentTypestringThe section's employment column: Employment Type, Job Schedule, Appointment Type, Position Type and similar
postedAtstringCalendar date, YYYY-MM-DD, from the section's posting-date column
jobUrlstringDirect link to the posting's jobdetail.ftl page
boardUrlstringThe canonical career section
sourceUrlstringThe job-board endpoint the row came from
collectedAtstringISO 8601 timestamp of the run

Reading a Taleo location

A location node is a path through the section's own location tree, and the tree's depth is configuration rather than a standard. The same two-segment shape means state and city at one employer (TX-Arlington), city and building at another (Dallas-W T White High School), and country and state at a third (United States-Texas).

Segments are therefore resolved against a fixed vocabulary rather than by position, and a segment that matches nothing is dropped instead of being allowed to displace a real value. A bare CA reads as California rather than Canada, because it is far more often California, and a spelled-out country name is never ambiguous. location always carries the node verbatim, which is the one field this cannot get wrong.

Why scrape Oracle Taleo career sections?

Taleo is legacy software with an enormous installed base. Hospital systems, universities, school districts, homebuilders, hotel groups and government agencies still run their hiring on it, and those employers are systematically under-covered by scrapers built for modern boards.

  • Follow public-sector and education hiring, where Taleo remains common and aggregator coverage is thin.
  • Track construction and hospitality requisitions by site, using the location tree the employer built.
  • Supply labour-market research with employers that technology-focused datasets miss entirely.
  • Keep a staffing desk stocked with fresh requisitions from a defined list of career sections.
  • Detect openings and expansions from where new requisitions cluster geographically.

How to use it

  1. On the employer's site, follow "search jobs" or "view all openings" until you reach a URL containing taleo.net/careersection/. Copy the whole URL.
  2. Paste it into Job boards. Up to 100 sections per run. A joblist.ftl link, a jobsearch.ftl link and a bare section path all rebuild to the same canonical section and are fetched once.
  3. Set Maximum results, which matters here because results are paginated 25 at a time.
  4. Start the run and export the dataset, or read it over the API.

Unlike the boards addressed by a company slug, Taleo needs the full URL. The section number in the path (/careersection/2/) is part of the address, and a single employer often runs several sections for different job families.

Input

FieldTypeDefaultDescription
boardsarray of stringsrequiredTaleo career-section URLs on taleo.net. Between 1 and 100 entries
maxItemsinteger1000Cap on dataset rows, up to 50,000
concurrencyinteger2Sections and result pages fetched in parallel, up to 5
{
"boards": [
"https://drhorton.taleo.net/careersection/2/jobsearch.ftl",
"https://hyatt.taleo.net/careersection/us_professional/jobsearch.ftl"
],
"maxItems": 1500,
"concurrency": 2
}

A host outside taleo.net, or a URL with no /careersection/<section> in its path, is rejected with a reason rather than fetched.

Output

One row per requisition. Illustrative shape:

{
"jobId": "2600123",
"title": "Construction Superintendent",
"company": null,
"tenant": "drhorton",
"location": "US-TX-Arlington",
"city": "Arlington",
"state": "TX",
"country": "US",
"isRemote": false,
"department": "Construction",
"employmentType": "Full-time",
"postedAt": "2026-06-18",
"jobUrl": "https://drhorton.taleo.net/careersection/2/jobdetail.ftl?job=2600123&lang=en",
"boardUrl": "https://drhorton.taleo.net/careersection/2/jobsearch.ftl?lang=en",
"sourceUrl": "https://drhorton.taleo.net/careersection/rest/jobboard/searchjobs?lang=en&portal=101430233",
"collectedAt": "2026-08-20T09:14:02.118Z"
}

A posting open in several locations reads "location": "US-TX-Arlington; US-TX-Frisco" with city, state and country all null, since none of them can describe two places at once.

The run also writes a SUMMARY record listing the item count, the failure count and every section or page that failed with its error.

How much does it cost?

Pay per event, charged once per result row written to the dataset. The rate is on this Actor's pricing tab. A section that will not open produces no rows and costs nothing.

Two requests open a section and each further page returns 25 rows, so requests here scale with rows rather than with employers. maxItems is the lever that controls the bill.

Runs from an Apify free plan stop at 250 requests and 250 results and report the limit in the run status. Any paid plan runs the full input. The cap binds on requests as well as rows because the fetches run on our own infrastructure, which Apify does not reimburse for free-plan runs.

Using it with the Apify API

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("usestring/taleo-jobs").call(run_input={
"boards": ["https://drhorton.taleo.net/careersection/2/jobsearch.ftl"],
"maxItems": 1500,
})
for job in client.dataset(run["defaultDatasetId"]).iterate_items():
print(job["postedAt"], job["state"], job["title"])
summary = client.key_value_store(run["defaultKeyValueStoreId"]).get_record("SUMMARY")
print(summary["value"]["failureCount"], "target(s) failed")

The JavaScript client and the REST API take the same input.

A Taleo career section is a public job search that employers run so candidates can find and apply to open roles. This Actor reads the same unauthenticated job-board endpoint the section's own page reads, with no account, no cookie and no API key.

The rows describe requisitions. There is no candidate data, no application record and no recruiter contact information in the output, and company is always null because Taleo publishes no display name to collect.

Whether a particular use is permitted depends on your jurisdiction and on the terms you agreed to. This is background rather than legal advice.

FAQ

How do I find a company's Taleo career section? Follow "search jobs" or "view all openings" from the employer's careers page and copy the URL once it contains taleo.net/careersection/. There is no shorter handle to pass, and one employer may run several sections.

How many postings come back per request? The section's own page size, 25 by default, plus one opening request for the shell that carries the portal id and the column labels.

Does it work for every company on Taleo? For every career section that exposes the job-board endpoint, which is the one the section's own search page calls. A section whose shell publishes no portal id is reported as a failure naming that reason, rather than returning an empty result.

Why are department, employmentType and postedAt sometimes empty? Each career section picks its own result columns and its own names for them. Those three fields are filled only when the section publishes a column this Actor recognises. Organization, Division and Business Unit are deliberately excluded from the department match: at least one large tenant files a posting's hotel under Organization, which is a place rather than a department, and a column that means something different per employer is worse than an empty one.

Why is postedAt sometimes null when the section clearly shows a date? Only unambiguous written forms are read. A numeric date such as 03/04/2026 means March in one section's locale and April in another's, and Taleo never states which, so it is left null rather than guessed.

Why is company always null? Taleo career sections do not publish a company display name anywhere in the payload. tenant is the identity the section is addressed by, and it is the field to join on.

What happens if one section fails? It is recorded in SUMMARY under failures with its error, and the other sections still produce rows. The run only exits with an error when every section failed.

Feedback

If a career section will not open, or a column lands in the wrong field, open an issue from this Actor's Store page and include the section URL. Column-label coverage is the part that most often needs extending, and one URL is enough to extend it.