ANOFM Scraper - Romanian Public Employment Service Jobs
Pricing
from $1.20 / 1,000 result scrapeds
ANOFM Scraper - Romanian Public Employment Service Jobs
Scrape job vacancies from ANOFM (mediere.anofm.ro), Romania's national public employment service. Search by occupation keyword. Extract titles, employers, salaries, locations, contract types, and hiring-contact details. No login required.
Pricing
from $1.20 / 1,000 result scrapeds
Rating
0.0
(0)
Developer
Studio Amba
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
What does ANOFM Scraper do?
ANOFM Scraper extracts job vacancies from mediere.anofm.ro, the official job search of ANOFM (Agenția Națională pentru Ocuparea Forței de Muncă), Romania's national public employment service. It collects job titles, employers (with Romanian company tax code / CUI), locations, salaries, contract types, education requirements, and hiring-contact email/phone, directly from the site's own JSON search API. No login or cookies required.
Use it on the Apify platform to get structured Romanian labour-market data via API, schedule recurring scrapes, and integrate with tools like Zapier, Make, Google Sheets, and Slack.
How to scrape ANOFM data
- Go to the ANOFM Scraper on the Apify Store.
- Click Try for free to open the actor in the Apify Console.
- Enter a Romanian-language occupation keyword (e.g. "vanzator", "asistent medical", "sofer") or leave it empty to browse all current active vacancies nationwide.
- Set the maximum number of results you want.
- Click Start and wait for the run to finish.
- Download your data as JSON, CSV, Excel, or HTML from the Output tab.
Why use ANOFM Scraper?
- Recruitment and hiring — Monitor vacancies registered with the Romanian public employment service to understand hiring trends by region, sector, and occupation.
- Salary research — Benchmark salaries employers report to the labour office, by occupation, county, and city.
- Labor market analysis — Track which occupations and counties (județe) have the most open positions, and which employers are hiring most actively.
- Lead generation — Every vacancy includes the employer's Romanian tax code (CUI) and a hiring-contact email and phone — a clean join key for B2B/recruitment outreach.
- EU-mobility research — Vacancies flag whether they're explicitly open to EU citizens, useful for cross-border labour-mobility research.
- Academic and public-policy research — Gather structured Romanian labour-market data straight from the official employment service registry.
Input
| Field | Type | Required | Description |
|---|---|---|---|
searchQuery | String | No | Romanian-language occupation keyword (e.g. "vanzator", "asistent medical", "sofer"). Matched against the official COR (Clasificarea Ocupațiilor din România) occupation catalog, diacritic-insensitive. Leave empty to browse all current active vacancies nationwide. |
maxResults | Integer | No | Maximum number of job vacancies to scrape (default: 100, max: 20000). |
proxyConfiguration | Object | No | Proxy settings. mediere.anofm.ro's job API has no anti-bot protection and isn't geo-locked, so Apify's automatic/free proxy pool is used by default — no residential proxy needed. |
Output
Each result contains structured data about a single job vacancy. You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.
Example output
{"jobTitle": "VÂNZATOR","occupationCode": "522101","jobDomain": "COMERT","numberOfPositions": 1,"company": "DAVAD FIVE SYSTEMS S.R.L.","companyTaxCode": "46156289","county": "Teleorman","city": "ALEXANDRIA","fullLocation": "Teleorman > MUNICIPIUL ALEXANDRIA > ALEXANDRIA","streetAddress": "DUNĂRII 1","salaryFrom": null,"salaryTo": null,"salaryType": "none","currency": "RON","contractType": "Cu durată nedeterminată","workType": "Cu normă întreagă","workRegime": "Sediu","educationLevel": "Liceal - LICEU TEORETIC","professionalExperience": "Experiență puțină - mai puțin de 3 ani","availableToEuCitizens": false,"jobDescription": null,"postedDate": "2026-08-07T12:41:24.000Z","jobStartDate": "2026-08-07T00:00:00.000Z","expiresDate": "2026-08-14T00:00:00.000Z","contactName": "PETA GABRIEL","contactEmail": "davadfive@yahoo.com","contactPhone": "0765625369","url": "https://mediere.anofm.ro/app/module/mediere/job/3350579","scrapedAt": "2026-08-07T14:31:29.792Z"}
Data fields
| Field | Type | Description |
|---|---|---|
jobTitle | String | Occupation/job title as registered by the employer |
occupationCode | String | Official Romanian COR occupation classification code |
jobDomain | String | Sector/domain of the job (e.g. "Retail", "Medicină / Sănătate") |
numberOfPositions | Integer | Number of open positions for this vacancy |
company | String | Employer name |
companyTaxCode | String | Romanian company tax identification number (CUI/CIF) of the employer |
county | String | Județ (county) where the job is located |
city | String | City/locality where the job is located |
fullLocation | String | Full location breadcrumb as returned by ANOFM |
streetAddress | String | Employer street address, when disclosed |
salaryFrom | Number | Minimum monthly salary, when disclosed |
salaryTo | Number | Maximum monthly salary, when disclosed |
salaryType | String | "gross", "net", or "none" as reported by the employer |
currency | String | Always "RON" |
contractType | String | Employment contract type (e.g. "Cu durată nedeterminată" = permanent) |
workType | String | Full-time/part-time work type |
workRegime | String | Work regime, e.g. on-site ("Sediu") |
educationLevel | String | Minimum required education level |
professionalExperience | String | Required professional experience level |
availableToEuCitizens | Boolean | Whether the vacancy is explicitly marked as open to EU citizens |
jobDescription | String | Free-text job description, when the employer provided one |
postedDate | String | ISO 8601 date the vacancy was registered |
jobStartDate | String | ISO 8601 date the job is expected to start, when set |
expiresDate | String | ISO 8601 date the vacancy listing expires |
contactName | String | Hiring contact's name, when disclosed |
contactEmail | String | Hiring contact's email, when disclosed |
contactPhone | String | Hiring contact's phone, when disclosed |
url | String | Direct URL to the vacancy detail page on mediere.anofm.ro |
scrapedAt | String | ISO 8601 timestamp of when the data was collected |
Cost estimate
This actor calls mediere.anofm.ro's own JSON search API directly rather than rendering pages in a browser, and every field — including the hiring contact's email and phone — comes back in a single request per page (no per-job detail fetch needed), so it runs fast and cheap: roughly 0.1–0.3 compute units per 1,000 results. At standard Apify pricing that's well under $0.20 per 1,000 job vacancies. As with any Apify actor, the run's usage cost only settles once the run reports SUCCEEDED — reading a mid-run/in-progress dataset understates the eventual cost.
Tips
- Use specific occupation keywords to get more relevant results and reduce run time. The keyword is matched against Romania's official COR occupation catalog, so both exact occupation names ("VÂNZATOR") and everyday terms ("vanzator", no diacritics needed) work.
- Leave
searchQueryempty to pull the newest vacancies across all of Romania. - Broad keywords (e.g. "asistent medical") can match a dozen or more related occupation codes in the COR catalog — the actor queries all of them and merges/dedupes results automatically.
- Schedule recurring runs to track new vacancies daily or weekly.
- Combine with other Romanian job board scrapers for full national coverage across both public and private-sector postings.
Limitations
- A free-text job-ad description field exists but is populated on a minority of listings (roughly 1 in 6 in testing) — most ANOFM vacancies are structured form submissions by the employer, not marketing copy.
- Salary data is not available for all vacancies — some employers do not disclose a figure.
- Contact email/phone are populated on the large majority of listings but not all — some employers leave them blank.
- Data is scraped from the public mediere.anofm.ro website and may change without notice.
Integrations
Connect ANOFM Scraper with your existing tools and workflows:
- Google Sheets — Export vacancies directly to a spreadsheet for easy filtering and sharing.
- Slack — Get notified when new vacancies matching your criteria appear.
- Zapier / Make — Build workflows that react to new job postings in real time.
- Custom API — Access all results programmatically via the Apify API in JSON format.
FAQ and support
Is it legal to scrape mediere.anofm.ro? Scraping publicly available data is generally permitted under EU law. This actor only accesses public job vacancies that require no login, via the same API the public search page uses. The site's robots.txt does not exist (returns HTTP 404), so no crawl restrictions apply.
How often is the data updated? The actor scrapes live data from mediere.anofm.ro each time it runs. Schedule it daily or weekly to track changes.
I found a bug or have a feature request. Open an issue in the Issues tab on the actor page. You can also request a custom scraping solution.
Need this data on a schedule, or a custom version?
We run this scraper as a managed service for businesses: scheduled runs, deduplication, delta detection, and delivery to your inbox, Google Sheets, or API — maintenance included. We can also build a custom version with your exact fields and filters, or combine multiple sources into one feed.
See studioamba.dev/services or email hello@studioamba.dev for a free data sample. We maintain 300+ European web scrapers and answer within one business day.