Dealls Jobs Scraper Indonesia avatar

Dealls Jobs Scraper Indonesia

Pricing

from $4.00 / 1,000 results

Go to Apify Store
Dealls Jobs Scraper Indonesia

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

ProdukDigitalAli

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

18 days ago

Last modified

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?

FieldMeaning
jobIdStable Actor-generated ID derived from the canonical Dealls job URL
jobSlugPublic Dealls job slug
titleJob title
companyNameEmployer/company name
companyUrlPublic company profile URL when available
jobUrlCanonical Dealls job URL
sourceListUrlListing/filter page where the job was discovered
locationJob location
employmentTypeFull-Time, Contract, Internship, Freelance, etc.
workModeOn-site, Hybrid, or Remote
experiencePublic experience/candidate-level requirement
salaryMin, salaryMaxNormalized numeric salary range when publicly displayed
salaryCurrencySalary currency, normally IDR for Rp listings
salaryNegotiableWhether salary is shown as negotiable
recruiterActivityPublic recruiter activity signal
activelyHiringBoolean normalized from the public activity signal
applicantSignalPublic signal such as Fewer Applicants when shown
statusNormalized vacancy status when determinable
descriptionPublic job description with detail enrichment
requirementsPublic qualifications/requirements
industryPublic company industry after normalization
companyLocationPublic company location
companySizePublic company-size text
benefitsPublicly displayed benefits
changeTypeMonitoring classification: NEW, UPDATED, UNCHANGED, or EXPIRED
observedAtUTC monitoring observation timestamp
scrapedAtUTC scrape timestamp
fingerprintHash 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

  1. Add one or more public Dealls URLs in Dealls job URLs. The default https://dealls.com/en is the recommended first run.
  2. Set Maximum jobs. Keep the default while testing, then increase it for larger scans.
  3. Keep Fetch full job details enabled when you need descriptions, requirements, benefits, and company metadata.
  4. Run the Actor and inspect the Jobs, Hiring intelligence, or Monitoring dataset view.
  5. 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:

ResultsPer-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.
  • EXPIRED detection 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.