Arbeitnow Jobs Scraper - Germany & Visa Sponsorship avatar

Arbeitnow Jobs Scraper - Germany & Visa Sponsorship

Pricing

from $1.84 / 1,000 jobs

Go to Apify Store
Arbeitnow Jobs Scraper - Germany & Visa Sponsorship

Arbeitnow Jobs Scraper - Germany & Visa Sponsorship

Scrape Arbeitnow jobs from its boards for Germany, the UK, France and Switzerland. Each row has the title, company, location, the board's remote and visa-sponsorship flags, job types, tags and the full description. Lookups add the employer's own date and apply link. $1.90 per 1,000 jobs.

Pricing

from $1.84 / 1,000 jobs

Rating

0.0

(0)

Developer

Dami's Studio

Dami's Studio

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

2

Monthly active users

8 days ago

Last modified

Categories

Share

Pull Arbeitnow job postings as rows, with the board's own visa-sponsorship flag on every one: the title, company, location, remote flag, job types, tags and the full description, filtered by keywords, a city or a date window. Two optional lookups add the date the employer really published the job and their own application page.

Two things to know before you build on it. Arbeitnow is a board, not an archive: it holds roughly the last week of postings, about 7,500 when measured in September 2026. And its feed now mixes four boards, Germany, the UK, France and Switzerland. On 2 October 2026, 208 of the newest 651 postings came from the German one.

InputKeywords, a location, job types, tags or a date window, or just a number of postings
OutputOne row per job posting: title, company, location, remote and visa flags, job types, tags, description
Ceiling10,000 per run, though the board itself holds about a week of postings
SpeedAbout 5 seconds for the newest 50 postings, about 5 minutes for 2,000. The job-page lookups add time
Account neededNone
Price$1.90 per 1,000 jobs on the Free plan, a little less on paid plans. The free plan's $5 a month covers about 2,600

🔍 What Arbeitnow Jobs Scraper does

The visa flag is the field worth being exact about. It is Arbeitnow's own flag, the list behind its visa sponsorship jobs page, not a guess of ours. visaSponsorshipOnly reads that list directly. Leave it off and every row still carries visaSponsorship as true or false. It is null only on a run where the list could not be read.

What the flag tells you depends on the board. On the German board it is selective: 3 of the newest 208 German postings carried it on 2 October 2026. On the UK, French and Swiss boards every posting did. If you want employers in Germany that sponsor, keep the rows whose jobUrl is on arbeitnow.com.

Arbeitnow filters on visa sponsorship itself and on nothing else. Keywords, location, remote, job type, tags and the date window are applied here, after the postings are read, and a posting they drop is never charged. Because of that, a keyword that matches nothing could walk the whole board, so a filtered run reads the newest 10 pages and tells you when it stopped there. Raise maxPagesScanned for rare terms.

Two dates, and they are not the same one. listedAt is when Arbeitnow picked the posting up. postedAt is when the employer published it, and it only arrives with Read each job page on. The row further down was published on 21 August and listed on 19 September.

📋 What data you get from each Arbeitnow job

What you getField
The posting's id, its page and the company's page on ArbeitnowjobId, slug, jobUrl, companyUrl
Title and company, as the employer wrote themtitle, companyName
Arbeitnow's apply link, and with the lookup on, the employer's own page and the hiring system behind itapplyUrl, employerApplyUrl, atsProvider
The location as typed, split into city, region, country and postcode where the text allowslocation, city, region, countryCode, postalCode
The board's remote and visa-sponsorship flagsisRemote, visaSponsorship
The board's type labels, a normalised type and the tagsjobTypes, employmentType, tags
A salary, when the employer published onesalaryMin, salaryMax, salaryCurrency, salaryPeriod, salaryText
The employer's publication date, the expiry, and when Arbeitnow listed itpostedAt, validThrough, listedAt
The posting text, as HTML and as plain textdescriptionHtml, descriptionText
Which of your phrases matched, where the posting sat on the board, when it was readsearchQuery, page, position, scrapedAt

▶️ How to scrape Arbeitnow jobs

  1. Open Arbeitnow Jobs Scraper and click Try for free.
  2. Set How many postings.
  3. Add phrases under Keywords, or tick Only jobs that sponsor a visa or Only remote jobs.
  4. For the employer's own date and application page, turn on Read each job page and Follow the apply link.
  5. Click Start, then download the dataset as JSON, CSV or Excel.

The form arrives with software engineer and 50 already filled in, so a run started without editing it is a real search. Called through the API with an empty input, it writes one free sample row and stops.

💰 How much does it cost to scrape Arbeitnow jobs?

$1.90 per 1,000 jobs on the Free plan, which is $0.0019 a posting, a little less on paid plans. On the free plan, the $5 Apify gives you each month covers about 2,600 postings.

Not charged: the sample row, diagnostic rows, and every posting a filter drops. A posting is never returned twice in one run. The description and both lookups add no charge of their own, only time. If you set a maximum cost for the run, it stops when that is reached.

📥 What you give it

{
"maxItems": 200,
"visaSponsorshipOnly": true,
"searchQueries": ["software engineer", "data analyst"],
"location": "Berlin",
"postedWithin": "week",
"includeJobDetails": true,
"resolveApplyUrl": true
}

Set maxItems on its own and you get the newest postings. Add any filter and you get the newest that match.

FieldWhen left outWhat it is
maxItems501 to 10,000 postings.
searchQueriesnonePhrases to look for in the title, company, location, tags or description. A posting matches if it holds every word of one phrase, so "data engineer" needs both words. German and English both work.
visaSponsorshipOnlyoffOnly postings Arbeitnow flags for visa sponsorship.
remoteOnlyoffOnly postings the board marks remote.
locationnoneText the location must contain, case-insensitive. A plain city name works best: Berlin, München. Postings with no location cannot match.
jobTypesnonePartial, case-insensitive match on the board's type labels, so student catches "Working student".
tagsnonePostings carrying at least one of these tags, such as Engineering, Sales or IT. A tag matches whole and case-insensitive, so IT does not catch "Security". A rare tag can come back with fewer postings than asked, since a filtered run reads at most maxPagesScanned pages.
postedWithinany timeday, 3days, week or 2weeks, measured on listedAt.
maxPagesScanned101 to 120. How far back a filtered run reads.
includeDescriptiononThe posting text as HTML and as plain text. No extra charge. Turn it off for smaller rows.
includeJobDetailsoffReads each job page for the publication date, expiry, a normalised employment type, the address and a salary where one is published. One extra request per posting, so a big run is slower.
resolveApplyUrloffFollows the apply link one hop and records the employer's own page and the hiring system behind it.
proxyConfigurationnot neededOptional. Only for sending the requests through servers of your own, which are used exactly as given.

📤 What you get back

A real row from a run on 20 September 2026 with both lookups on, the description cut short:

{
"jobId": "infrastructure-engineer-deployments-munich-392732",
"slug": "infrastructure-engineer-deployments-munich-392732",
"title": "Infrastructure Engineer - Deployments (d/f/m)",
"companyName": "Arculus",
"companyUrl": "https://www.arbeitnow.com/jobs/companies/arculus",
"jobUrl": "https://www.arbeitnow.com/jobs/companies/arculus/infrastructure-engineer-deployments-munich-392732",
"applyUrl": "https://www.arbeitnow.com/jobs/companies/arculus/infrastructure-engineer-deployments-munich-392732/apply",
"employerApplyUrl": "https://arculus.jobs.personio.de/job/2763879?#apply?utm_source=arbeitnow.com&_pc=arbeitnow.com",
"atsProvider": "Personio",
"location": "Munich",
"city": "Munich",
"region": "BAVARIA",
"countryCode": "DE",
"postalCode": null,
"isRemote": false,
"visaSponsorship": true,
"jobTypes": ["Experienced", "Permanent", "Full time"],
"employmentType": "FULL_TIME",
"tags": ["Infrastructure"],
"salaryMin": null,
"salaryMax": null,
"salaryCurrency": null,
"salaryPeriod": null,
"salaryText": null,
"postedAt": "2026-08-21T17:27:58+02:00",
"listedAt": "2026-09-19T17:09:53.000Z",
"validThrough": "2026-10-31T19:09:53+01:00",
"descriptionHtml": "<br><strong>Responsibilities</strong>...",
"descriptionText": "ResponsibilitiesAs an Infrastructure Engineer, you will be responsible for the reliable delivery and deployment of our software systems...",
"searchQuery": null,
"page": 1,
"position": 3,
"scrapedAt": "2026-09-20T01:11:17.527Z"
}
FieldHow to read it
jobUrlAlso tells you the board: arbeitnow.com is the German one, and .co.uk, .fr and .ch the others.
employerApplyUrl, atsProviderOnly with resolveApplyUrl on: where the application really lands, and which hiring system that is.
countryCode, city, regionSplit out of the location text where it allows, and null where it does not. With includeJobDetails on, the address Arbeitnow publishes fills the gaps.
salaryMin to salaryTextOnly from the job page, and only when the employer published one. Null means not published, not zero.
postedAt, validThroughOnly with includeJobDetails on. listedAt is always there.
descriptionHtml, descriptionTextPresent while includeDescription is on.

🧾 Reading the output

RowHow to spot itCharged
A jobno _sample and no _diagnostic fieldyes
The sample row_sample: true and charged: false. Only when the input asks for nothing at allno
A diagnostic_diagnostic: true, ok: false, charged: false, and an errorCodeno

Real job rows carry no charged field. The sample row looks like a job, jobId and all, so drop rows with _sample or _diagnostic and you are left with the jobs you paid for.

errorCodeWhat it means
NO_RESULTSNothing matched. The row says how many postings were read, how many each filter dropped (breakdown), and whether the run stopped at maxPagesScanned (stoppedEarly).
VISA_LIST_UNAVAILABLEYou asked for sponsored jobs only and the sponsorship list could not be read on that run. Try again in a few minutes.
RATE_LIMITED, HTTP_ERROR, NETWORK, NOT_FOUND, BAD_PAYLOADArbeitnow could not be read, so nothing came back. Worth one re-run a few minutes later.
TIME_LIMITThe run got close to its time limit and stopped on its own. The jobs delivered before that are complete and charged. Give the run more time, or ask for fewer jobs, to get the rest. The run ends as failed only when the stop came before any job did.

If the board stops answering partway through, you keep what already arrived and the status message names the code.

💡 What people use it for

  • A list of employers Arbeitnow flags for visa sponsorship, with their real application pages from resolveApplyUrl. Keep the arbeitnow.com rows if it has to be Germany.
  • A morning feed of the last day's postings. With postedWithin set to day the run stops reading once it is past the window, so it does not re-read the whole board every day.
  • Seeing which hiring systems employers apply through, straight off atsProvider.

🚧 What it does not do

  • No archive. Roughly a week of postings, nothing older.
  • No country filter. The German, UK, French and Swiss boards arrive mixed, in blocks of about 50. jobUrl says which board a posting came from, while countryCode is often null because the location is free text.
  • Salaries are rare. On a sample of 14 job pages, one published a salary. Most German employers do not print a number, and this never makes one up.
  • The remote flag is the board's, and it is sparse, 50 of the newest 651 postings on 2 October 2026, and now and then wrong: one posting located "Remote-US, Canada" carried isRemote: false. If remote matters, read the location and the description too.
  • location is free text. Employers type it, so it runs from Stuttgart to Berlin, Berlin, Germany to nothing at all.
  • The visa list is today's. Sponsored roles that have aged off the board are gone.
  • No salary or language filter.
  • It is not an official Arbeitnow tool. Dami's Studio is independent and is not affiliated with or endorsed by Arbeitnow, or by any other company named on this page.

🧭 Which job scraper do you need?

If you wantUse
Arbeitnow's postings for Germany, the UK, France and Switzerland, with its visa-sponsorship flagThis one
Jobs in Germany, Austria and Switzerland, marked remote, hybrid or on-siteXING Jobs Scraper
Every open job at companies you name, read from their own hiring systemCareer Site Jobs Scraper
Public LinkedIn jobs by keyword and locationLinkedIn Jobs Scraper
Remote jobs, with the region the employer hires fromRemotive Jobs Scraper

❓ Questions people ask

Do I need an Arbeitnow account or a key?

No. Nothing to sign into, nothing to paste.

Can I get only jobs that sponsor a visa?

Yes, tick visaSponsorshipOnly. Leave it off and you can split the rows yourself on visaSponsorship. Read the note on the four boards first, because outside Germany the flag sits on every posting.

Why is postedAt empty?

It only fills with Read each job page on. listedAt is always there, but it is when the board picked the posting up, sometimes weeks after the employer published it.

Why did I get fewer jobs than I asked for?

Either the board ran out of matching postings, or a filtered run reached maxPagesScanned. The run's log says which, and a NO_RESULTS row shows how many postings each filter dropped.

Can I call it from code or connect it to an AI assistant?

Yes. The API tab has ready-made code for Python, JavaScript and the command line. For Claude, ChatGPT or another MCP client, connect https://mcp.apify.com/?tools=fetch-actor-details,dami_studio/arbeitnow-jobs-scraper. Either way the run happens on your Apify account at the same price.

It reads the public job board, the same postings any visitor sees, with no login. If a posting names a person, that is personal data under GDPR and similar laws, so have a reason for keeping it. Apify's write-up on the legality of web scraping is a good starting point, and we are not lawyers.

🆘 If something breaks

Open the Issues tab on the actor page. Send the input you used and the run ID, plus the diagnostic row if you got one.