JobThai Jobs Scraper
Pricing
from $0.95 / 1,000 jobs
JobThai Jobs Scraper
Get JobThai job listings with salary, company, location, qualifications and full descriptions, in English or Thai. No login.
Pricing
from $0.95 / 1,000 jobs
Rating
0.0
(0)
Developer
Pakpoom
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 hours ago
Last modified
Categories
Share
Search JobThai, a Thai job board, and get structured job listings: title, company, province, salary, job category, qualifications, benefits and the full description as plain text, in English or Thai. Plain HTTP, no browser, no login.
Who it is for
- Recruiters and HR teams tracking who hires for which roles, and at what pay, in Thailand.
- Market and salary researchers building a dataset of Thai job postings by category, province and date.
- Job aggregators and career sites that want fresh JobThai listings in their own database.
- Analysts and LLM pipelines that need clean job text and qualification lists to classify or summarize.
What you get
- Many searches in one run. One keyword per line: a job title, a skill or a company, in English or Thai. An empty keyword returns the newest jobs of the whole site.
- Full details or a fast list. With
includeDetailson, each job page is opened for the description, qualifications, benefits, employment type, number of positions and business type. Turn it off for a much faster run with the search-result fields only. - Salary as shown, and as numbers when clear.
salaryTextis always the text from the site.salaryMin,salaryMaxandsalaryCurrency(THB) are filled when the salary is a clear amount or range. - Only recent jobs.
postedWithinDayskeeps the jobs updated in the last N days. Results are read newest first, so the search stops as soon as a page holds only older jobs. - Duplicates removed. A job found by several of your searches, or twice because the site's pages shift while reading, is returned and charged once.
- No contact details. Recruiter phone numbers and e-mail addresses are never collected.
- Failures don't fail the run. A search that fails becomes an
erroritem (never charged) and the other searches continue. - Options for scheduled runs.
failOnErrorandminResultsend a run as failed when something is wrong, so a scheduled run with alerts cannot fail silently.
Input
| Field | Default | What it does |
|---|---|---|
queries | ["developer"] | Search keywords, one per entry (1 to 50). |
language | en | en or th: the language of the JobThai pages (labels such as province follow it). |
maxResults | 100 | Stop after this many jobs in total, 1 to 2,000. |
postedWithinDays | none | Keep only jobs updated in the last N days (1 to 365). |
includeDetails | true | Open each job page for the full details. |
failOnError | false | End the run as failed if any search ends in an error item. |
minResults | 0 | End the run as failed if fewer jobs than this came back. |
Example: accountant jobs updated in the last three days
{ "queries": ["accountant", "บัญชี"], "maxResults": 300, "postedWithinDays": 3 }
Output
One dataset item per job. This is a real item from our test runs, shortened:
{"jobId": 1733100,"url": "https://www.jobthai.com/en/job/1733100","title": "Full Stack Web Developer","companyName": "บริษัท โสมาภา อินฟอร์เมชั่น เทคโนโลยี จำกัด (มหาชน)","companyId": 251762,"province": "Bangkok","district": "Khlong Sam Wa","region": "Bangkok Area","jobType": "Computer/IT","subJobType": "Programmer/Software Engineer","employmentType": "Full-time","salaryText": "30,000 - 50,000 THB","salaryMin": 30000,"salaryMax": 50000,"salaryCurrency": "THB","tags": [],"urgent": false,"updatedAt": "2026-10-17T10:04:08.000Z","numberOfPositions": 3,"businessType": "Computer / IT","query": "developer","scrapedAt": "2026-10-17T17:23:03.495Z"}
The example leaves out description, qualifications, benefits, companyWebsite and workAddress, which every item also has.
| Field | Notes |
|---|---|
jobId, url, title, urgent, scrapedAt | Never null. |
salaryMin, salaryMax, salaryCurrency | Null unless the salary is a clear amount or range in THB. |
companyName, province, district, region, jobType, salaryText, updatedAt | Can be null when JobThai does not show them. |
subJobType, employmentType, description, benefits, numberOfPositions, businessType, companyWebsite, workAddress | Null when includeDetails is off or the employer left them empty. |
tags, qualifications | Arrays; empty when none (qualifications is empty when includeDetails is off). |
A failed search or an invalid input produces { "type": "error", "input": ..., "message": ... }. Error items are never charged.
Measured limits
From our tests in October 2026 (10 runs, 5,400 jobs, no errors):
- Depth. One run with an empty keyword returned 2,000 jobs with full details in about 7.5 minutes and stopped at
maxResults, not because the site ran out: on the day of testing the site listed about 46,900 jobs. The result pages shift while a run reads them, so about 2% of rows were repeats, which are skipped and not charged. - Speed. A list-only run of 300 jobs took 12 to 16 seconds; 200 jobs with full details took about 34 seconds.
- Salary. About a third of the jobs (33%) showed a clear THB amount or range; the others say Negotiable, Based on experience or free text, and come back as
salaryTextonly. - Details. In runs with full details: description on 99% of jobs, qualifications 100%, employment type 100%, business type 100%, sub-category 97%, benefits 90%, company website 82%, number of positions 52%, work address 37%. Title, company, province, category, salary text and update time were present on every job; district on 89% and region on 98%.
Pricing
Pay per result: $0.95 per 1,000 jobs, plus a small start fee per run. No monthly fee (you need an Apify account). Error items and duplicates are never charged.
- 100 jobs: $0.095.
- 2,000 jobs (the per-run maximum): $1.90.
You can set a maximum cost per run in Apify; the Actor stops cleanly when it is reached.
FAQ
Does it need a login or cookies? No. It reads the same public pages any visitor sees.
Does it use a proxy? No, it runs from Apify's platform addresses and backs off when the site slows down.
Is it legal? It collects only publicly visible job postings and never reads recruiter contact details. You are responsible for how you use the data, including data-protection law for any personal data in descriptions.
Why is salaryMin empty for so many jobs? About two thirds of employers write Negotiable, Based on experience or a free-text offer, and the Actor does not guess numbers from free text.
How many jobs can I get? Up to 2,000 per run; run several searches for more.
More from this developer
- VietnamWorks Jobs Scraper: job listings from Vietnam with salary, level and skills.
- Kalibrr Jobs Scraper: job listings from the Philippines and Indonesia.
- ITviec Jobs Scraper: IT job listings from Vietnam; no salary field.
- Google Play Reviews Scraper & Monitor: reviews with ratings, app versions and developer replies.
Not affiliated with JobThai. Version 1.0.