Directory Datasets
OnlineJobs.ph logo
JobsHiringRemote Work

OnlineJobs.ph dataset

Filipino VA job postings with title, salary, skills, posting date, and application URL.

Pricing
$0.003/job posting
Format
JSON · CSV · HTML

Sample data

Fields you get

FieldTypeDescription
recordIdstringStable unique identifier for the record
sourcestringSource identifier (origin platform)
sourceUrlstringPublic URL the record was sourced from
jobIdstringOnlineJobs.ph internal job ID
titlestringJob title
employerobjectEmployer name and profile URL
postingDateobject | nullPosting date (parsed ISO + raw string)
salaryobject | nullSalary range (parsed currency + amount + raw string)
hoursPerWeekobject | nullWorking hours per week (parsed + raw)
employmentTypestring | nullFull Time / Part Time / Gig
skillsstring[]Skills required by the posting
descriptionstring | nullFree-text description
applicationUrlstringDirect URL to apply
isRemotebooleanWhether the role is remote
isNewbooleanWhether the posting is flagged new by OnlineJobs.ph
searchContextobjectMetadata about the search axis used for this record
scrapedAtstringISO 8601 timestamp of when the record was extracted

How it works

Extract OnlineJobs.ph job postings — title, salary, skills, employment type, hours, posting date, description, and application URL.

What does it do?

Scrapes OnlineJobs.ph public job listings and returns structured records you can drop into a candidate-matching tool, hiring intelligence dashboard, newsletter, or recruitment CRM. Each result includes the full job title, employment type (Full Time / Part Time / Gig), salary (parsed and raw), posting date (ISO), skill tags, full description, and direct application URL.

Who is it for?

  • VA agencies monitoring demand and salary trends.
  • Founders and operators sourcing Filipino virtual assistants.
  • Staffing firms building candidate/job matching tools.
  • Competitive-intelligence teams tracking offshore-hiring trends.
  • Newsletter and job-board operators curating remote VA jobs.

How does it work?

OnlineJobs.ph is server-rendered HTML. The list page exposes most fields directly (title, posting timestamp, salary teaser, employment type, skill tags). Optionally, the Actor fetches each detail page for the full description, hours-per-week, and full skill list.

Drive the scrape three ways:

  1. Keywords (recommended): supply keywords, jobTypes, and/or skills. The Actor builds OnlineJobs.ph search URLs from the cross-product.
  2. Start URLs: paste OnlineJobs.ph search URLs into startUrls.
  3. No input: defaults to the latest-jobs feed.

Input

{
  "keywords": ["virtual assistant", "bookkeeper"],
  "jobTypes": ["Full Time", "Part Time"],
  "skills": ["WordPress"],
  "salaryMinUsd": 0,
  "salaryMaxUsd": 0,
  "postedWithinDays": 30,
  "includeDescription": true,
  "deltaMode": false,
  "maxItems": 1000,
  "maxConcurrency": 1,
  "proxyConfiguration": { "useApifyProxy": true },
  "debugMode": false
}

Output (one item per job)

{
  "recordId": "onlinejobs_ph_1623197",
  "source": "onlinejobs_ph",
  "sourceUrl": "https://www.onlinejobs.ph/jobseekers/jobsearch?jobkeyword=accountant",
  "jobId": "1623197",
  "title": "Accountant (US Taxation, Payroll and QuickBooks Specialist)",
  "employer": { "name": null, "profileUrl": null },
  "postingDate": { "raw": "Posted on 2026-04-29 13:28:50", "iso": "2026-04-29T13:28:50Z" },
  "salary": { "raw": "$5 - $6 per hour", "currency": "USD", "min": 5, "max": 6, "period": "hour" },
  "hoursPerWeek": { "raw": "40", "value": 40 },
  "employmentType": "Full Time",
  "skills": ["Payroll", "Bookkeeping"],
  "description": "Are you a highly analytical Accountant...",
  "applicationUrl": "https://www.onlinejobs.ph/jobseekers/job/1623197",
  "isRemote": true,
  "searchContext": { "keyword": "accountant", "sourceUrl": "https://www.onlinejobs.ph/jobseekers/jobsearch?jobkeyword=accountant" },
  "scrapedAt": "2026-04-29T00:00:00.000Z"
}

Sample output

A real sample run is pinned for reference (onlinejobsph-4-30-2026-sample-data):

  • HTML preview (rendered table, no login): https://api.apify.com/v2/datasets/6XStCdlyHe4fyDxOz/items?signature=MC4xNzc4NzM3MDkwNzE5LjFidEM4MjJuUUpIVzlBVFo1TDRadg&format=html&view=overview&clean=true
  • JSON (clean): https://api.apify.com/v2/datasets/6XStCdlyHe4fyDxOz/items?signature=MC4xNzc4NzM3MDkwNzE5LjFidEM4MjJuUUpIVzlBVFo1TDRadg&format=json&clean=true
  • CSV: https://api.apify.com/v2/datasets/6XStCdlyHe4fyDxOz/items?signature=MC4xNzc4NzM3MDkwNzE5LjFidEM4MjJuUUpIVzlBVFo1TDRadg&format=csv&clean=true
  • Console preview (logged-in): https://console.apify.com/storage/datasets/6XStCdlyHe4fyDxOz

Delta / new-postings mode

Set deltaMode: true to only emit jobs that weren't seen in any prior run of this Actor on the same Apify account. The Actor stores seen jobIds in its key-value store and emits new postings with isNew: true.

Pricing

  • $0.003 per job result (any mode).
  • $0.005 per delta result (deltaMode: true and the job is new).

You only pay for valid records actually written to the dataset.

Limits and responsible use

  • This Actor respects OnlineJobs.ph's Crawl-delay: 5 — concurrency is capped at 2 with a 5-second pre-navigation delay. Runs are intentionally slow to avoid burdening the source.
  • Employer name and profile URL are not included — that data is login-gated. The corresponding fields are returned as null.
  • The public site exposes ~10 pages × 30 jobs ≈ 300 jobs per search. To extract more, supply additional keyword/skill/jobType filter combinations.
  • Only publicly available data is scraped; no authentication is bypassed.

FAQ

Why is employer.name always null? OnlineJobs.ph requires login to view employer names. v1 of this Actor sticks to public data only.

Why does my run only return ~300 jobs even with maxItems: 5000? OnlineJobs.ph caps anonymous browsing at ~10 pagination pages per search. Add more keywords or skills to broaden the surface area.

Does it parse salary correctly? Hourly, monthly, and weekly rates with USD prefixes parse cleanly. Free-text values like "Monthly Retainer" or "TBD" are preserved in the raw field with min/max set to null.

Need a custom format or one-off pull?

Submit a request — pre-built scrapers cover the common cases, but custom output formats, filtered subsets, or one-off historical pulls are usually quick to deliver.

Request a custom dataset