Saramin Scraper — South Korea Job Ads & Employers
Pricing
from $3.50 / 1,000 results
Saramin Scraper — South Korea Job Ads & Employers
Scrape vacancies from Saramin, South Korea's largest job board: title, hiring company with profile link, location, required experience and education, employment type, job functions and deadline. Keyless, no login. JSON, CSV or Excel.
Pricing
from $3.50 / 1,000 results
Rating
0.0
(0)
Developer
Logiover
Maintained by CommunityActor stats
0
Bookmarked
36
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Export vacancies from Saramin, South Korea's largest job board — company, location, required experience and education, employment type and job functions — to JSON, CSV or Excel. Keyless, no login.
What does Saramin Scraper do?
Saramin renders its search results server-side, so this Actor parses the result cards directly and walks the pagination. No API key, no account, no cookies.
The card packs four unrelated facts into a single unlabelled condition row: location, required experience, required education and employment type — and the order shifts whenever one of them is missing. Reading them positionally is exactly how a scraper ends up with 정규직 (permanent contract) sitting in a location column. This Actor classifies each value by its own Korean signature, so every column holds the right kind of fact on every row, including ads that omit education or experience entirely.
The job-functions cell also appends an "updated on" note. That note is split into its own updatedDate field instead of being left glued to the end of the sector list.
Who is it for?
- Recruitment agencies tracking which Korean companies are hiring and where.
- Market entrants mapping demand before opening a Korean office.
- B2B sales teams using hiring activity as a growth signal.
- Job boards and aggregators that need a Korean feed.
- Labour-market analysts measuring experience and education requirements by role.
Use cases
- List every company hiring AI or backend engineers in Gyeonggi, with company links.
- Measure what level of experience Korean employers demand for a given role.
- Track how many roles require a master's degree versus a bachelor's.
- Build a weekly feed of new postings in a job function.
- Spot the moment a target company opens its first role in a discipline.
Why use this Actor?
- Keyless — nothing to sign up for.
- 16 structured fields, with the condition row correctly split into four.
- Experience and education requirements as separate, filterable columns.
- Job functions cleaned of the trailing "updated on" note.
- Company profile link for every employer.
- Honest columns — a value only lands in a column when it matches that field's pattern.
What data can you extract?
| Field | Type | Description |
|---|---|---|
jobId | string | Saramin recruitment ID |
title | string | Job title |
jobUrl | string | Public ad page |
companyName | string | Hiring company |
companyUrl | string | Company page on Saramin |
location | string | Province, city and district |
experienceRequired | string | e.g. 경력10년↑, 신입 |
educationRequired | string | e.g. 대졸↑, 석사↑ |
employmentType | string | e.g. 정규직, 계약직, 인턴 |
sector | string | Job functions, comma-separated |
deadlineLabel | string | Application deadline as displayed |
updatedDate | string | Date the ad was last updated |
badges | string | Card badges, e.g. top-decile salary |
country | string | South Korea |
source | string | Always saramin |
scrapedAt | string | Run timestamp (ISO 8601) |
Example output
{"jobId": "54576019","title": "LLM Developer","jobUrl": "https://www.saramin.co.kr/zf_user/jobs/relay/view?rec_idx=54576019","companyName": "(주)씨어스","location": "경기 성남시 분당구","experienceRequired": "경력 5~20년","educationRequired": "석사↑","employmentType": "정규직","sector": "NLP(자연어처리), AIX, AWS, Azure, GCP","updatedDate": "26/07/29","country": "South Korea","source": "saramin"}
How to use it
- Enter a keyword — English terms work well for tech roles, Korean for everything else.
- Optionally set a Saramin location code.
- Set Maximum results and run, then export JSON, CSV or Excel.
Input example
{"query": "developer","maxResults": 1000}
Additional input fields
These optional fields are also available in the input form and API:
| Field | Type | Default | Description |
|---|---|---|---|
proxyConfiguration | proxy | {"useApifyProxy": true} | Saramin serves plain HTML; the default datacenter proxy is enough. |
Notes and limits
- Saramin does not publish salary on search cards, so this Actor does not invent a salary column. Pay appears inside the ad page when the employer discloses it.
- Titles and job functions are in Korean because employers write them that way; tech roles often mix English.
- Saramin renders 40 cards per page; the Actor stops when a page returns noticeably fewer.
- This Actor exports listing cards, not full descriptions — that is what keeps bulk runs cheap. Open
jobUrlfor the full text. - You are responsible for how you use employer data.
FAQ
Do I need a Saramin account? No. Listings are public and this Actor needs nothing from you.
Why is there no salary field? Because Saramin's result cards do not carry one. Shipping an always-empty salary column would be worse than leaving it out.
Can I search in English? Yes for tech and international roles; Korean keywords cover the rest of the market.
Are experience and education always present?
No — some ads omit them, in which case those fields are null rather than filled with an unrelated value.
How am I charged? Pay per result — you pay for the vacancies delivered.
*Maintained: last verified 2026-11-01 — checked end-to-end against live run history (reliability, output fields and types, and time/memory budgets).
Is it legal?
This Actor collects only publicly available data — the same content any visitor to Saramin can see without logging in. It does not bypass authentication and does not gather private information. How you use the output is your responsibility: respect the source's terms, applicable copyright, and data-protection law such as GDPR where personal data is involved.
This Actor is an independent tool. It is not affiliated with, endorsed by, or sponsored by Saramin; Saramin and all other trademarks mentioned here are the property of their respective owners.
Related scrapers
Other Actors from the same collection:
Scheduling and integrations
Run this Actor on a schedule — hourly, daily or weekly — and have every run append to the same dataset, which is how you turn a one-off export into a time series. Results can be pushed straight into Google Sheets, Slack, Zapier, Make, Airtable or any Webhook.
How much Saramin data can you extract in one run?
A single run returned 960 job ads in 116 seconds on the example input. That is roughly 496 job ads a minute. Widen the search — more queries, more pages, a broader location — and the same run goes deeper.
There is no hard ceiling built into this Actor. What bounds a run is the result limit you set, the breadth of the input you give it, and how much Saramin itself publishes. Because billing is per result, a wider run costs proportionally more and a narrow one costs almost nothing — so it is worth starting small and scaling once the output looks right.
Saramin scraping — frequently asked questions
Do I need a Saramin API key, account or login?
No. This Actor reads publicly available pages and feeds, so there is nothing to register for and no credentials to manage.
How do I export Saramin data to CSV, Excel, JSON or Google Sheets?
Open the Storage tab after a run and pick the format you want — CSV, Excel, JSON, XML or an HTML table. For Google Sheets, Airtable or a database, use the dataset URL or the Apify API so the sheet refreshes itself on every run.
Can I schedule this Saramin scraper to run daily or hourly?
Yes. Use the Schedules tab and pick a cadence. Daily is enough for most tracking work; pick hourly only if the job ads you care about really do change that fast.
How many job ads can I get, and what does it cost?
See the volume section above for a measured figure. Billing is per result, so you pay for the rows you actually receive and a run that finds nothing costs nothing.
Is scraping Saramin legal?
This Actor collects only information that Saramin publishes publicly. It does not log in, does not defeat access controls and does not touch private data. You remain responsible for how you use the output, including under GDPR and similar rules where personal data is involved.
What happens if Saramin blocks the run or changes its layout?
A refused exit IP is swapped for a fresh one within a quarter of a second and retried, and rate limiting is waited out rather than fought. If nothing gets through, the run fails with the reason instead of reporting success with zero rows — so an empty result always means "no matches", never "the source would not answer".
Can I use this with an AI agent, LangChain or an MCP client?
Yes. The Actor is callable over the Apify API and through Apify's MCP server, so an agent can run it and read the dataset back as a tool call.
📝 Changelog
2026-11-01
- Monthly health check (2026-11-01): a live run on the current build completed successfully and returned data. Input options, output fields and pricing are unchanged.
- README refreshed: independence disclaimer added; documented 1 additional input field.
2026-10-15
- Every request now has a hard time limit, so a proxy connection that stalls can no longer hold up the run or push it past its timeout.
- A run that reaches its maximum cost per run now stops cleanly with its results saved and a status message, instead of ending as aborted.
- A proxy group your account cannot use no longer stops the run at start-up; it falls back to the default Apify Proxy.
- Memory is managed within the run's own limit, which removes a rare out-of-memory crash on large pages.
- The prefilled example for
maxResultsis now 200 (was 100). - The default used when the field is left out for
maxResultsis now 4,000 (was 500).
2026-09-23
- Fleet-wide quality audit. Verified end to end against live data and re-checked the input schema, the output columns and the run configuration.
- Output verified on a live run: 100 row(s) across 16 columns, 95.4% of cells populated.
- Run reliability reviewed: 89.7% of public runs succeeded in the last 30 days.
- Input schema, output schema and pricing configuration reviewed.
2026-09-01
- Fleet-wide health check. Verified against this Actor's real run history: 30-day success rate, output row counts, per-field fill rates, and peak memory against the configured memory limit.
- Reviewed for the failure patterns that have cost this fleet runs — unguarded proxy setup, retry loops that can outlast the run's own time budget, and full-page HTML parsing that can exhaust a small container.
- No change to input, output fields or scraping logic.
2026-08-11
- Maintenance release: refreshed the build and dependencies.
- Re-verified live execution, non-empty structured output and dataset field/type integrity.
- Reviewed reliability (retries, pagination) and output quality as part of a full-fleet QA pass.