eJobs.ro Scraper — Romania Job Ads & Company Leads avatar

eJobs.ro Scraper — Romania Job Ads & Company Leads

Pricing

from $3.50 / 1,000 results

Go to Apify Store
eJobs.ro Scraper — Romania Job Ads & Company Leads

eJobs.ro Scraper — Romania Job Ads & Company Leads

Scrape job ads from eJobs.ro, Romania's largest job board: title, hiring company with verified flag and open-position count, cities and counties, industry, department, languages, coordinates and dates. Keyless. JSON, CSV or Excel.

Pricing

from $3.50 / 1,000 results

Rating

0.0

(0)

Developer

Logiover

Logiover

Maintained by Community

Actor stats

0

Bookmarked

12

Total users

5

Monthly active users

6 days ago

Last modified

Security

Limited permissions

Share

Export job ads from eJobs.ro, Romania's largest job board — hiring company, cities and counties, industry, department and dates — to JSON, CSV or Excel. Keyless, no login.

What does eJobs.ro Scraper do?

eJobs.ro answers a public JSON API with no key, no account and no cookie. Roughly 15 000 ads are live at any time.

Two details decide how this Actor is built. First, the list endpoint stops returning rows past about page 20, so a single query can never reach the whole board — the Actor sweeps the site by replaying every department and industry name as a search term and de-duplicating on job ID. Second, list rows carry taxonomy IDs, not names: city 16, industry 8. The Actor loads the city, county, industry, department and language reference tables once and resolves them locally, so every row ships readable values instead of raw integers.

Each row identifies the hiring company with its verified badge and its total number of open positions — the signal that separates a one-off vacancy from an employer worth prospecting.

Who is it for?

  • Recruitment agencies mapping which Romanian companies are hiring and in which county.
  • B2B sales teams using hiring volume as a growth signal for account targeting.
  • Job boards and aggregators that need a Romanian feed without a data licence.
  • Market analysts tracking demand by industry, department and city.
  • HR-tech vendors prospecting employers who publish roles continuously.

Use cases

  • Build a list of every verified company hiring in IT across Bucharest and Cluj.
  • Rank employers by open-position count to find the fastest-growing accounts.
  • Track how many logistics roles appear per county, month over month.
  • Feed a niche Romanian job board with fresh listings and direct ad links.
  • Spot the moment a target company posts its first sales role.

Why use this Actor?

  • Keyless — no account, no token, no login.
  • 28 structured fields, with taxonomy IDs already resolved to names.
  • Sweeps past the paging ceiling by replaying department and industry terms.
  • Company signal included — verified employer flag, plus total open positions when detail fetch is on.
  • Coordinates included where eJobs publishes them, ready for mapping.
  • Optional requirements text — one extra request per ad, off by default.

What data can you extract?

FieldTypeDescription
jobIdstringeJobs ad ID
titlestringJob title
slugstringURL slug
jobUrlstringPublic ad page
companyNamestringHiring company
companyIdstringCompany ID
companySlugstringCompany page slug
companyVerifiedbooleaneJobs verified employer
companyLogoUrlstringCompany logo
companyOpenPositionsnumberTotal openings at the company (detail fetch only)
positionsnumberPositions in this ad
citiesstringCity names, comma-separated
countiesstringCounty names (detail fetch only)
industriesstringIndustry names
departmentsstringDepartment names
languagesstringRequired languages
latitude / longitudenumberCoordinates where published
jobTypestringAd status, e.g. active
creationDatestringFirst published
expirationDatestringExpiry
republishDatestringLast republished
lastModifiedstringLast edit
requirementsstringRequirements text (only when detail fetch is on)
presentationImageUrlstringEmployer presentation image
countrystringRomania
sourcestringAlways ejobs_ro
scrapedAtstringRun timestamp (ISO 8601)

Example output

{
"jobId": "1977725",
"title": "Team Leader (f/m/d)",
"jobUrl": "https://www.ejobs.ro/user/locuri-de-munca/team-leader-f-m-d/1977725",
"companyName": "MODIVO ROMANIA S.A.",
"companyVerified": true,
"positions": 8,
"cities": "București, Craiova, Brăila",
"industries": "Retail / Comerț",
"creationDate": "2026-08-07T19:13:11Z",
"expirationDate": "2026-09-06T00:00:00Z",
"jobType": "active",
"source": "ejobs_ro"
}

How to use it

  1. Enter a keyword, or leave it empty to sweep the whole board.
  2. Turn on Fetch requirements text only if you need the requirements block — it costs one extra request per ad.
  3. Set Maximum results.
  4. Run, then export JSON, CSV or Excel.

Input example

{
"query": "",
"maxResults": 5000
}

Additional input fields

These optional fields are also available in the input form and API:

FieldTypeDefaultDescription
fetchDetailsbooleanfalseOpen each ad for its requirements text, county names and the company's total open-position count — these three are not present in the list feed. Adds one request per ad, so leave it off for the fastest bulk export.
proxyConfigurationproxy{"useApifyProxy": true}eJobs answers a keyless public API; the default datacenter proxy is enough.

Notes and limits

  • eJobs honours only free-text search as a filter; city and industry filters are not exposed by the API. The Actor works around this by sweeping taxonomy terms, so a full-board run returns overlapping searches that are de-duplicated by job ID.
  • A single search stops at roughly 2 000 rows. Deeper coverage comes from the sweep, not from paging.
  • The API does not publish salary. Ads that mention pay do so inside the requirements text.
  • requirements, counties and companyOpenPositions live on the ad detail, not the list feed. Switch on Fetch requirements text to populate them; with the option off they stay null by design rather than pretending to be data.
  • You are responsible for how you use employer data, including under GDPR.

FAQ

Do I need an eJobs account? No. The API is public and this Actor needs nothing from you.

Why are city and industry filters missing from the input? Because eJobs ignores them on the API. Filter the exported dataset instead — every row carries resolved city, county, industry and department names.

Can I get more than 2 000 ads? Yes. Leave the keyword empty and the Actor sweeps department and industry terms to go deeper.

Is salary included? No. eJobs does not expose a salary field; when pay is mentioned it sits inside the requirements text.

How am I charged? Pay per result — you pay for the ads delivered.


*Maintained: last verified 2026-11-01 — checked end-to-end against live run history (reliability, output fields and types, and time/memory budgets).


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 eJobs.ro data can you extract in one run?

A single run returned 74 job ads in 22 seconds on the example input. That example is deliberately narrow; the result limit and the input list are both yours to widen. That is roughly 201 job ads a minute.

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 eJobs.ro 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.

eJobs.ro scraping — frequently asked questions

Do I need a eJobs.ro 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 eJobs.ro 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 eJobs.ro 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.

This Actor collects only information that eJobs.ro 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 eJobs.ro 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.

This Actor collects publicly available information from eJobs.ro only. It does not log in, does not circumvent access controls, and collects no private data. You are responsible for using the output lawfully, including under GDPR and comparable regimes where the rows contain personal data, and for respecting eJobs.ro's terms where they apply to you.

This Actor is an independent tool. It is not affiliated with, endorsed by, or sponsored by eJobs.ro; eJobs.ro and all other trademarks mentioned here are the property of their respective owners.

📝 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 2 additional input fields.

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 maxResults is now 200 (was 1,000).
  • The default used when the field is left out for maxResults is now 4,036 (was 1,000).

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.
  • Run reliability reviewed: 100.0% 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.