Dealls Jobs Scraper Indonesia
Pricing
from $4.00 / 1,000 results
Dealls Jobs Scraper Indonesia
Unofficial Dealls jobs scraper. Extract salary, company, location, work mode, experience, benefits, and public hiring signals for recruitment and labour-market intelligence. Export JSON/CSV/Excel and monitor NEW, UPDATED, UNCHANGED, and EXPIRED jobs. Not affiliated with or endorsed by Dealls.
Pricing
from $4.00 / 1,000 results
Rating
0.0
(0)
Developer
ProdukDigitalAli
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
18 days ago
Last modified
Categories
Share
What is Dealls Jobs Scraper Indonesia?
Dealls Jobs Scraper Indonesia is an unofficial, independent Actor that extracts public job listings from Dealls into structured data with salary, company, location, experience, work-mode, and public hiring signals. It is not affiliated with, endorsed by, or operated by Dealls.
Use it for job aggregation, recruiter and hiring intelligence, salary research, labour-market analysis, university or bootcamp insights, and AI job-matching workflows. Start with the default Dealls page for a quick run, or paste a focused Dealls listing/filter URL for a specific market slice.
For recurring workflows, monitor mode compares repeat runs and classifies jobs as NEW, UPDATED, UNCHANGED, or—after verification—EXPIRED.
Why use Dealls Jobs Scraper Indonesia?
Use this Actor when you need to:
- collect structured Indonesian job-market data without copying vacancies manually;
- monitor new and changed vacancies from the same Dealls search on a schedule;
- compare salary ranges across roles, locations, employers, and work arrangements;
- identify companies with public actively-hiring signals;
- build job datasets for recruiters, staffing teams, researchers, universities, or bootcamps;
- feed clean job records into spreadsheets, databases, APIs, analytics pipelines, or AI workflows.
The Actor uses a hybrid HTTP-first architecture. It reads public Dealls pages with lightweight HTTP requests and only launches Playwright for additional listing discovery when necessary. Detail enrichment remains HTTP-first to keep runs efficient.
What data can you extract from Dealls?
| Field | Meaning |
|---|---|
jobId | Stable Actor-generated ID derived from the canonical Dealls job URL |
jobSlug | Public Dealls job slug |
title | Job title |
companyName | Employer/company name |
companyUrl | Public company profile URL when available |
jobUrl | Canonical Dealls job URL |
sourceListUrl | Listing/filter page where the job was discovered |
location | Job location |
employmentType | Full-Time, Contract, Internship, Freelance, etc. |
workMode | On-site, Hybrid, or Remote |
experience | Public experience/candidate-level requirement |
salaryMin, salaryMax | Normalized numeric salary range when publicly displayed |
salaryCurrency | Salary currency, normally IDR for Rp listings |
salaryNegotiable | Whether salary is shown as negotiable |
recruiterActivity | Public recruiter activity signal |
activelyHiring | Boolean normalized from the public activity signal |
applicantSignal | Public signal such as Fewer Applicants when shown |
status | Normalized vacancy status when determinable |
description | Public job description with detail enrichment |
requirements | Public qualifications/requirements |
industry | Public company industry after normalization |
companyLocation | Public company location |
companySize | Public company-size text |
benefits | Publicly displayed benefits |
changeType | Monitoring classification: NEW, UPDATED, UNCHANGED, or EXPIRED |
observedAt | UTC monitoring observation timestamp |
scrapedAt | UTC scrape timestamp |
fingerprint | Hash used for meaningful change detection |
Fields can be null when Dealls does not expose that information publicly for a vacancy.
How to scrape Dealls jobs
- Add one or more public Dealls URLs in Dealls job URLs. The default
https://dealls.com/enis the recommended first run. - Set Maximum jobs. Keep the default while testing, then increase it for larger scans.
- Keep Fetch full job details enabled when you need descriptions, requirements, benefits, and company metadata.
- Run the Actor and inspect the Jobs, Hiring intelligence, or Monitoring dataset view.
- Export the dataset to JSON, CSV, or Excel, consume it through the Apify API, or schedule repeat runs.
Quick-start input
{"startUrls": [{ "url": "https://dealls.com/en" }],"maxItems": 18,"fetchDetails": true,"useBrowserForMore": true,"monitorMode": false}
Recurring monitoring input
{"startUrls": [{ "url": "https://dealls.com/en" }],"maxItems": 100,"fetchDetails": true,"useBrowserForMore": true,"monitorMode": true,"emitChangesOnly": true,"detectExpired": true,"maxExpiredChecks": 50,"monitorKey": "daily-dealls-jobs"}
For repeat comparisons, keep the same startUrls and monitorKey.
Important input options
startUrls— public Dealls listing/filter URLs or direct job-detail URLs.maxItems— maximum unique jobs selected across all start URLs.fetchDetails— enrich jobs from their public detail pages.useBrowserForMore— use Playwright only when additional listing discovery is required.maxLoadMoreClicks— safety limit for See More / Lebih Banyak interactions.concurrency— simultaneous detail HTTP requests.monitorMode— persist state and compare repeat runs.emitChangesOnly— emit only NEW, UPDATED, and EXPIRED records.detectExpired— verify missing jobs before declaring them expired.maxExpiredChecks— cap expiry-verification work per run.monitorKey— isolate independent monitoring workflows.proxyConfiguration— optional; direct connections are the default.
Output example
A real production-style result looks like this:
{"jobId": "b3cb4ea9513522b41493","jobSlug": "operations-supervisor-expansion-city-1~pt-xanhsm-green-and-smart","title": "Operations Supervisor (Expansion City)","companyName": "PT XanhSM Green & Smart Mobility","jobUrl": "https://dealls.com/en/loker/operations-supervisor-expansion-city-1~pt-xanhsm-green-and-smart","employmentType": "Full-Time","workMode": "On-site","location": "Indonesia","experience": "Min. 1 years of experience","salaryMin": 8000000,"salaryMax": 10000000,"salaryCurrency": "IDR","salaryNegotiable": false,"activelyHiring": true,"industry": "Taxi Listrik","companyLocation": "Jakarta Selatan","changeType": "NEW"}
Public listings change over time, so sample values are illustrative of the schema rather than a promise that the vacancy remains available.
Monitoring and incremental mode
Monitoring is designed for scheduled repeat runs using the same scope.
NEW— the stable job ID was not present in previous state.UPDATED— meaningful normalized fields changed since the previous run.UNCHANGED— the current meaningful fingerprint matches the previous state.EXPIRED— a previously seen job is missing from the current listing and its detail page confirms that it is closed or unavailable.
A job that disappears from the first page is not automatically expired. The Actor verifies missing candidates when detectExpired is enabled. Temporary network or parsing failures during expiry verification are non-destructive and do not remove the saved job from state.
Why can a successful monitoring run show "No results"?
With emitChangesOnly: true, UNCHANGED records are intentionally not written to the dataset. If 18 jobs are seen and all 18 are unchanged, a successful run can therefore produce an empty dataset.
Open Run summary and check values such as:
{"discoveredJobs": 18,"emittedResults": 0,"changeCounts": {"NEW": 0,"UPDATED": 0,"UNCHANGED": 18,"EXPIRED": 0}}
This is expected incremental-monitor behavior, not a scraping failure.
How much does it cost to scrape Dealls jobs?
The Actor uses transparent pay-per-event pricing based primarily on dataset results. The launch price is $0.004 per dataset item ($4.00 per 1,000 results), plus Apify's standard synthetic Actor-start event when enabled in the Store pricing configuration.
Examples at the launch per-result price:
| Results | Per-result charge |
|---|---|
| 100 | $0.40 |
| 500 | $2.00 |
| 1,000 | $4.00 |
Platform usage is intended to be included in the event pricing rather than passed through as a separate usage charge. Actual totals can differ if the run emits fewer records than requested or if Store pricing is changed later. Always check the Actor's Pricing tab for the current price.
With emitChangesOnly: true, unchanged jobs are not written to the default dataset. This means recurring monitoring can stay low-noise and per-result charges apply only to records actually emitted, such as NEW, UPDATED, or verified EXPIRED items.
API, schedules, and automation
The Actor can be run manually, through the Apify API, from a saved task, or on a schedule. A common recurring workflow is:
Dealls search URL → scheduled Actor run → NEW/UPDATED/EXPIRED records → database, webhook, spreadsheet, or AI workflow
The stable IDs, normalized fields, and explicit change semantics are designed to be easy to consume programmatically.
FAQ
Can I scrape Dealls jobs for one location or role?
Yes. Open the relevant public Dealls page, copy its URL, and use it in startUrls. This keeps the Actor aligned with the current public site rather than relying on undocumented query parameters.
Can I scrape a direct Dealls job URL?
Yes. Add the public job-detail URL to startUrls. With fetchDetails enabled, the Actor extracts the detail page directly.
Why did I get fewer results than maxItems?
The source page may expose fewer unique jobs, the See More control may not be available, some jobs may be duplicated across start URLs, or Dealls may have changed the current public page structure. Check RUN_SUMMARY for warnings.
Does monitor mode mark every missing job as expired?
No. detectExpired verifies the saved job's detail page before emitting EXPIRED. Missing-from-listing alone is intentionally insufficient.
Why is the dataset empty in changes-only mode?
If every seen job is UNCHANGED, emitChangesOnly: true emits no rows. Open RUN_SUMMARY to see the discovered count and change classification.
Are salary fields always available?
No. Some listings expose a numeric range, some show Negotiable, and some expose no salary. Missing values are returned as null rather than guessed.
Does the Actor access private candidate or employer data?
No. It is designed around publicly accessible job and company information and does not require candidate or employer login credentials.
Limitations
- Dealls can change its public HTML, copy, filters, or load-more behavior without notice.
- Field availability varies between vacancies.
- Browser fallback depends on the current See More / Lebih Banyak interface.
- The Actor does not log in or access private candidate/employer data.
- Large crawls should be scaled gradually while checking reliability and current unit economics.
EXPIREDdetection is conservative by design; candidates that cannot be verified safely remain in state rather than being removed.
Responsible use and support
This is an unofficial, independent Actor and is not affiliated with, endorsed by, sponsored by, or operated by Dealls. Dealls is referenced only to identify the public website and data source this Actor works with.
This Actor is intended for public business/listing data and legitimate use cases such as recruitment analytics, job aggregation, salary research, labour-market research, and automation. Users are responsible for ensuring that their use of the data complies with applicable laws, contractual obligations, and the target site's current terms.
When reporting an issue, include the Dealls URL, Apify run ID, approximate time, expected result, and the relevant warning/error from the run log. Do not include credentials or private data.