# Arbeitnow

> Search the Arbeitnow job board through its keyless public API. Arbeitnow is a Berlin job board for roles with visa sponsorship, remote work and four-day weeks: list the newest openings, search them by keyword, company, tag, employment type or city, pull the jobs posted since a scheduled run last checked, and see who is hiring. No account or API key is required.

App · Jobs & Hiring · 12 actions. Web page: https://docs.lodol.com/docs/integrations/arbeitnow

## Actions

### Get a job

Fetch one job by its slug, with the full description both as plain text and as the original HTML. The API has no per-job route, so this reads the board a page at a time until the slug turns up, up to ten pages. Take the slug from a listing step rather than typing one: the board publishes only what is open right now, so a role that has been filled or has expired is gone from it and is reported as not found.

**Inputs**

- Job slug or link (`slug`, text, required): The job's slug, as every other action returns it, or its Arbeitnow link, so the 'url' from an earlier step can be passed straight in. A slug is the tail of that link and looks like 'senior-product-designer-berlin-99001'. This field has no example to click because a slug only exists while the job is open: take one from a listing step in the same run.
- Description length (`description_characters`, number): How much of the description to return as plain text, up to 20,000 characters. Defaults to 20,000, which is the whole of all but the longest postings; the original HTML is returned in full either way. From 0 to 20000. Default: `20000`.
- Show in the run (`output_detail`, text): How much of each row to print into the run output for a person to read. Every row that was returned is listed either way, however many that is: the result limit above decides that, not this field. 'One line each' gives the job, the company, the place, how long ago it was posted and the slug that 'Get a job' takes; 'Every field' adds the tags, the exact posting date, the link and the description. This only changes what is displayed, never what is saved: a later step sees the same data whichever is chosen. Defaults to one line each. One of: `summary` (One line each), `full` (Every field, over several lines each). Default: `summary`.

**Outputs**

- `description_html` (text): The description as the board publishes it, HTML and all.
- `found_on_page` (number): Which page of the feed the job turned up on.
- `job` (object)
- `output_detail` (text): Which of the two display choices the step ran with, 'summary' or 'full'.
- `scanned_count` (number): How many jobs were read before it did.
- `scanned_pages` (number): How many pages that took.
- `terms` (text): Arbeitnow's terms note, which asks for a link back.

**Example output**

```json
{
  "description_html": "<p>Key Requirement:<br />o Hands-on experience on Building interfaces on any ESB platform.</p>",
  "found_on_page": 1,
  "job": {
    "age_days": 3,
    "company_name": "ateeca",
    "created_at": 1787217300,
    "created_at_iso": "2026-08-20T09:15:00Z",
    "description": "Key Requirement:\no Hands-on experience on Building interfaces on any ESB platform.\no Experience in Core Java, Messaging (JMS), Web API: SOAP, REST and authentication methods such as OAuth and SAML.\n\nAll your information will be kept confidential according to EEO guidelines.",
    "description_truncated": false,
    "job_types": [
      "Mid-senior",
      "contract"
    ],
    "location": "Leicester",
    "remote": false,
    "slug": "mulesoft-developer-ateeca-178727",
    "tags": [
      "Information technology and services",
      "information technology"
    ],
    "title": "Mulesoft Developer",
    "url": "https://arbeitnow.com/view/mulesoft-developer-ateeca-178727"
  },
  "output_detail": "summary",
  "scanned_count": 42,
  "scanned_pages": 1,
  "terms": "This is a free public API for jobs, please do not abuse. I would appreciate linking back to the site. By using the API, you agree to the terms of service present on Arbeitnow.com"
}
```

### List companies

List the companies hiring on the board, most open roles first, with how many each has, how many of those are remote, and a link to its newest posting. The API publishes no company index, so this counts the jobs it reads: use it to find who is hiring before looking a company up.

**Inputs**

- Pages to read (`max_pages`, number): How much of the board to count, from 1 to 10 pages of about a hundred jobs each. The counts describe the jobs this reads, not the whole board, and 'scanned_count' says how many that was. Pages already read by an earlier step in the same run are reused, so the three counting actions together cost one pass, not three. Defaults to 3. From 1 to 10. Default: `3`.
- Number of rows (`max_results`, number): How many rows to return, most jobs first, from 1 to 500. Defaults to 50. From 1 to 500. Default: `50`.
- Show in the run (`output_detail`, text): How much of each row to print into the run output for a person to read. Every row that was returned is listed either way, however many that is: the result limit above decides that, not this field. 'One line each' gives the job, the company, the place, how long ago it was posted and the slug that 'Get a job' takes; 'Every field' adds the tags, the exact posting date, the link and the description. This only changes what is displayed, never what is saved: a later step sees the same data whichever is chosen. Defaults to one line each. One of: `summary` (One line each), `full` (Every field, over several lines each). Default: `summary`.

**Outputs**

- `companies` (list)
- `company_count` (number): How many distinct companies were found.
- `has_more` (true/false): Whether the board had further pages when the count stopped.
- `output_detail` (text): Which of the two display choices the step ran with, 'summary' or 'full'.
- `result_count` (number): How many rows are returned.
- `scanned_count` (number): How many jobs were counted.
- `scanned_pages` (number): How many pages that took.
- `terms` (text): Arbeitnow's terms note, which asks for a link back.

**Example output**

```json
{
  "companies": [
    {
      "company_name": "ateeca",
      "job_count": 7,
      "latest_created_at_iso": "2026-08-20T09:15:00Z",
      "latest_job_slug": "mulesoft-developer-ateeca-178727",
      "latest_job_title": "Mulesoft Developer",
      "latest_job_url": "https://arbeitnow.com/view/mulesoft-developer-ateeca-178727",
      "remote_count": 2
    }
  ],
  "company_count": 128,
  "has_more": true,
  "output_detail": "summary",
  "result_count": 1,
  "scanned_count": 300,
  "scanned_pages": 3,
  "terms": "This is a free public API for jobs, please do not abuse. I would appreciate linking back to the site. By using the API, you agree to the terms of service present on Arbeitnow.com"
}
```

### List job types

List the employment types and seniorities the board is using, most jobs first, with a count for each. The board files both under one field, so 'full time' and 'contract' appear alongside 'Entry' and 'Mid-senior'. Use it to find the exact wording for the job type filter on the other actions.

**Inputs**

- Pages to read (`max_pages`, number): How much of the board to count, from 1 to 10 pages of about a hundred jobs each. The counts describe the jobs this reads, not the whole board, and 'scanned_count' says how many that was. Pages already read by an earlier step in the same run are reused, so the three counting actions together cost one pass, not three. Defaults to 3. From 1 to 10. Default: `3`.
- Number of rows (`max_results`, number): How many rows to return, most jobs first, from 1 to 500. Defaults to 50. From 1 to 500. Default: `50`.
- Show in the run (`output_detail`, text): How much of each row to print into the run output for a person to read. Every row that was returned is listed either way, however many that is: the result limit above decides that, not this field. 'One line each' gives the job, the company, the place, how long ago it was posted and the slug that 'Get a job' takes; 'Every field' adds the tags, the exact posting date, the link and the description. This only changes what is displayed, never what is saved: a later step sees the same data whichever is chosen. Defaults to one line each. One of: `summary` (One line each), `full` (Every field, over several lines each). Default: `summary`.

**Outputs**

- `has_more` (true/false): Whether the board had further pages when the count stopped.
- `job_type_count` (number): How many distinct job types were found.
- `job_types` (list)
- `output_detail` (text): Which of the two display choices the step ran with, 'summary' or 'full'.
- `result_count` (number): How many rows are returned.
- `scanned_count` (number): How many jobs were counted.
- `scanned_pages` (number): How many pages that took.
- `terms` (text): Arbeitnow's terms note, which asks for a link back.

**Example output**

```json
{
  "has_more": true,
  "job_type_count": 11,
  "job_types": [
    {
      "job_count": 214,
      "job_type": "Full time",
      "remote_count": 55
    },
    {
      "job_count": 96,
      "job_type": "Mid-senior",
      "remote_count": 31
    }
  ],
  "output_detail": "summary",
  "result_count": 2,
  "scanned_count": 300,
  "scanned_pages": 3,
  "terms": "This is a free public API for jobs, please do not abuse. I would appreciate linking back to the site. By using the API, you agree to the terms of service present on Arbeitnow.com"
}
```

### List jobs

Read one page of the Arbeitnow job board, newest first, about a hundred jobs a page. This is the board as the API publishes it, with each description converted from HTML to plain text: one request, no filtering. Feed the 'next_page' value back in to walk further down the board, or use 'Search jobs' when you know what you are looking for.

**Inputs**

- Page (`page`, number): Which page of the board to read. The board serves 100 jobs a page; feed the 'next_page' value from a previous run back in here to keep going. Defaults to 1, the newest jobs. At least 1. Default: `1`.
- Visa sponsorship (`visa_sponsorship`, text): Narrow to jobs that offer visa sponsorship, or to ones that do not. This is the one filter Arbeitnow applies itself, through its 'visa_sponsorship' query parameter, so which postings qualify is its call and not this integration's. Leave empty for both. One of: `true` (Offers visa sponsorship), `false` (Does not offer visa sponsorship).
- Description length (`description_characters`, number): How much of each job's description to return, as plain text with the HTML removed, up to 20,000 characters. Set 0 to leave descriptions out entirely when a step only needs titles and links. Defaults to 600. From 0 to 20000. Default: `600`.
- Show in the run (`output_detail`, text): How much of each row to print into the run output for a person to read. Every row that was returned is listed either way, however many that is: the result limit above decides that, not this field. 'One line each' gives the job, the company, the place, how long ago it was posted and the slug that 'Get a job' takes; 'Every field' adds the tags, the exact posting date, the link and the description. This only changes what is displayed, never what is saved: a later step sees the same data whichever is chosen. Defaults to one line each. One of: `summary` (One line each), `full` (Every field, over several lines each). Default: `summary`.

**Outputs**

- `first_result` (number): The position of this page's first job in the whole feed.
- `has_more` (true/false): Whether a next page exists.
- `info` (text): Arbeitnow's own note about how often the board updates.
- `jobs` (list)
- `last_result` (number): And of its last.
- `next_page` (number): The next page number, or empty on the last page.
- `output_detail` (text): Which of the two display choices the step ran with, 'summary' or 'full'.
- `page` (number): The page that was read.
- `per_page` (number): Jobs per page, as the board reports it.
- `previous_page` (number): The previous page number.
- `result_count` (number): How many jobs are on this page.
- `terms` (text): Arbeitnow's terms note, which asks for a link back.

**Example output**

```json
{
  "first_result": 1,
  "has_more": true,
  "info": "Jobs are updated every hour and order by the `created_at` timestamp. Use `?page=` to paginate. Read more information here: https://arbeitnow.com/blog/job-board-api",
  "jobs": [
    {
      "age_days": 3,
      "company_name": "ateeca",
      "created_at": 1787217300,
      "created_at_iso": "2026-08-20T09:15:00Z",
      "description": "Key Requirement:\no Hands-on experience on Building interfaces on any ESB platform.\no Experience in Core Java, Messaging (JMS), Web API: SOAP, REST and authentication methods such as OAuth and SAML.\n\nAll your information will be kept confidential according to EEO guidelines.",
      "description_truncated": false,
      "job_types": [
        "Mid-senior",
        "contract"
      ],
      "location": "Leicester",
      "remote": false,
      "slug": "mulesoft-developer-ateeca-178727",
      "tags": [
        "Information technology and services",
        "information technology"
      ],
      "title": "Mulesoft Developer",
      "url": "https://arbeitnow.com/view/mulesoft-developer-ateeca-178727"
    }
  ],
  "last_result": 100,
  "next_page": 2,
  "output_detail": "summary",
  "page": 1,
  "per_page": 100,
  "previous_page": null,
  "result_count": 1,
  "terms": "This is a free public API for jobs, please do not abuse. I would appreciate linking back to the site. By using the API, you agree to the terms of service present on Arbeitnow.com"
}
```

### List jobs at a company

List one employer's open positions on the board, newest first. The name is matched case-insensitively anywhere in the company name, so a fragment is enough and 'GmbH' finds every German company on it. Only employers currently advertising are on the board, so run 'List companies' to see who that is rather than guessing a name.

**Inputs**

- Company (`company`, text, required): The company to look up, matched case-insensitively anywhere in its name.
- Number of jobs (`max_results`, number): How many jobs to return, from 1 to 200. The scan stops as soon as this is filled, so a small number is also a quick one. Defaults to 25. From 1 to 200. Default: `25`.
- Pages to read (`max_pages`, number): How much of the board to look through, from 1 to 10 pages of about a hundred jobs each. The API has no search of its own, so a filter is applied to the jobs this reads: more pages reach further back but take longer, and a page carries every description, so the first read of one is a few seconds. Later steps in the same run reuse the pages already read, so a workflow pays for each page once. Defaults to 3. From 1 to 10. Default: `3`.
- Description length (`description_characters`, number): How much of each job's description to return, as plain text with the HTML removed, up to 20,000 characters. Set 0 to leave descriptions out entirely when a step only needs titles and links. Defaults to 600. From 0 to 20000. Default: `600`.
- Show in the run (`output_detail`, text): How much of each row to print into the run output for a person to read. Every row that was returned is listed either way, however many that is: the result limit above decides that, not this field. 'One line each' gives the job, the company, the place, how long ago it was posted and the slug that 'Get a job' takes; 'Every field' adds the tags, the exact posting date, the link and the description. This only changes what is displayed, never what is saved: a later step sees the same data whichever is chosen. Defaults to one line each. One of: `summary` (One line each), `full` (Every field, over several lines each). Default: `summary`.

**Outputs**

- `company` (text): The company that was looked up.
- `has_more` (true/false): Whether the board had further pages when the scan stopped.
- `jobs` (list)
- `output_detail` (text): Which of the two display choices the step ran with, 'summary' or 'full'.
- `result_count` (number): How many jobs matched.
- `scanned_count` (number): How many jobs were read from the board to find them.
- `scanned_pages` (number): How many pages that took.
- `terms` (text): Arbeitnow's terms note, which asks for a link back.
- `truncated` (true/false): Whether the limit was reached with jobs still unread, so there may be more matches.

**Example output**

```json
{
  "company": "ateeca",
  "has_more": true,
  "jobs": [
    {
      "age_days": 3,
      "company_name": "ateeca",
      "created_at": 1787217300,
      "created_at_iso": "2026-08-20T09:15:00Z",
      "description": "Key Requirement:\no Hands-on experience on Building interfaces on any ESB platform.\no Experience in Core Java, Messaging (JMS), Web API: SOAP, REST and authentication methods such as OAuth and SAML.\n\nAll your information will be kept confidential according to EEO guidelines.",
      "description_truncated": false,
      "job_types": [
        "Mid-senior",
        "contract"
      ],
      "location": "Leicester",
      "remote": false,
      "slug": "mulesoft-developer-ateeca-178727",
      "tags": [
        "Information technology and services",
        "information technology"
      ],
      "title": "Mulesoft Developer",
      "url": "https://arbeitnow.com/view/mulesoft-developer-ateeca-178727"
    }
  ],
  "output_detail": "summary",
  "result_count": 1,
  "scanned_count": 300,
  "scanned_pages": 3,
  "terms": "This is a free public API for jobs, please do not abuse. I would appreciate linking back to the site. By using the API, you agree to the terms of service present on Arbeitnow.com",
  "truncated": false
}
```

### List jobs by tag

List the jobs filed under a tag, newest first. Tags are free text on this board and the vocabulary changes with what is posted, so they are matched case-insensitively anywhere in the tag and a tag nobody is using returns nothing. Run 'List tags' first to see which ones are actually in use.

**Inputs**

- Tags (`tags`, list, required): The tags to look for. A job matches if it carries any one of them. Accepts a list or a comma-separated list, so the 'tag' values from 'List tags' can be passed straight in.
- Remote or on-site (`remote`, text): Only return jobs the board marks as remote, or only ones it does not. Leave empty for both. One of: `remote` (Remote only), `onsite` (On-site only).
- Number of jobs (`max_results`, number): How many jobs to return, from 1 to 200. The scan stops as soon as this is filled, so a small number is also a quick one. Defaults to 25. From 1 to 200. Default: `25`.
- Pages to read (`max_pages`, number): How much of the board to look through, from 1 to 10 pages of about a hundred jobs each. The API has no search of its own, so a filter is applied to the jobs this reads: more pages reach further back but take longer, and a page carries every description, so the first read of one is a few seconds. Later steps in the same run reuse the pages already read, so a workflow pays for each page once. Defaults to 3. From 1 to 10. Default: `3`.
- Description length (`description_characters`, number): How much of each job's description to return, as plain text with the HTML removed, up to 20,000 characters. Set 0 to leave descriptions out entirely when a step only needs titles and links. Defaults to 600. From 0 to 20000. Default: `600`.
- Show in the run (`output_detail`, text): How much of each row to print into the run output for a person to read. Every row that was returned is listed either way, however many that is: the result limit above decides that, not this field. 'One line each' gives the job, the company, the place, how long ago it was posted and the slug that 'Get a job' takes; 'Every field' adds the tags, the exact posting date, the link and the description. This only changes what is displayed, never what is saved: a later step sees the same data whichever is chosen. Defaults to one line each. One of: `summary` (One line each), `full` (Every field, over several lines each). Default: `summary`.

**Outputs**

- `has_more` (true/false): Whether the board had further pages when the scan stopped.
- `jobs` (list)
- `output_detail` (text): Which of the two display choices the step ran with, 'summary' or 'full'.
- `result_count` (number): How many jobs matched.
- `scanned_count` (number): How many jobs were read from the board to find them.
- `scanned_pages` (number): How many pages that took.
- `tags` (list): The tags that were looked up, lower-cased.
- `terms` (text): Arbeitnow's terms note, which asks for a link back.
- `truncated` (true/false): Whether the limit was reached with jobs still unread, so there may be more matches.

**Example output**

```json
{
  "has_more": true,
  "jobs": [
    {
      "age_days": 3,
      "company_name": "ateeca",
      "created_at": 1787217300,
      "created_at_iso": "2026-08-20T09:15:00Z",
      "description": "Key Requirement:\no Hands-on experience on Building interfaces on any ESB platform.\no Experience in Core Java, Messaging (JMS), Web API: SOAP, REST and authentication methods such as OAuth and SAML.\n\nAll your information will be kept confidential according to EEO guidelines.",
      "description_truncated": false,
      "job_types": [
        "Mid-senior",
        "contract"
      ],
      "location": "Leicester",
      "remote": false,
      "slug": "mulesoft-developer-ateeca-178727",
      "tags": [
        "Information technology and services",
        "information technology"
      ],
      "title": "Mulesoft Developer",
      "url": "https://arbeitnow.com/view/mulesoft-developer-ateeca-178727"
    }
  ],
  "output_detail": "summary",
  "result_count": 1,
  "scanned_count": 300,
  "scanned_pages": 3,
  "tags": [
    "information technology"
  ],
  "terms": "This is a free public API for jobs, please do not abuse. I would appreciate linking back to the site. By using the API, you agree to the terms of service present on Arbeitnow.com",
  "truncated": false
}
```

### List jobs in a location

List the jobs based in a city or region, newest first. The board is strongest in Germany, so 'Berlin', 'München' and 'Hamburg' are well populated, and the text is matched case-insensitively anywhere in the location. Remote jobs often carry no location at all, so use the remote filter for those rather than a place name.

**Inputs**

- Location (`location`, text, required): The city or region to look for, matched case-insensitively anywhere in a job's location.
- Remote or on-site (`remote`, text): Only return jobs the board marks as remote, or only ones it does not. Leave empty for both. One of: `remote` (Remote only), `onsite` (On-site only).
- Number of jobs (`max_results`, number): How many jobs to return, from 1 to 200. The scan stops as soon as this is filled, so a small number is also a quick one. Defaults to 25. From 1 to 200. Default: `25`.
- Pages to read (`max_pages`, number): How much of the board to look through, from 1 to 10 pages of about a hundred jobs each. The API has no search of its own, so a filter is applied to the jobs this reads: more pages reach further back but take longer, and a page carries every description, so the first read of one is a few seconds. Later steps in the same run reuse the pages already read, so a workflow pays for each page once. Defaults to 3. From 1 to 10. Default: `3`.
- Description length (`description_characters`, number): How much of each job's description to return, as plain text with the HTML removed, up to 20,000 characters. Set 0 to leave descriptions out entirely when a step only needs titles and links. Defaults to 600. From 0 to 20000. Default: `600`.
- Show in the run (`output_detail`, text): How much of each row to print into the run output for a person to read. Every row that was returned is listed either way, however many that is: the result limit above decides that, not this field. 'One line each' gives the job, the company, the place, how long ago it was posted and the slug that 'Get a job' takes; 'Every field' adds the tags, the exact posting date, the link and the description. This only changes what is displayed, never what is saved: a later step sees the same data whichever is chosen. Defaults to one line each. One of: `summary` (One line each), `full` (Every field, over several lines each). Default: `summary`.

**Outputs**

- `has_more` (true/false): Whether the board had further pages when the scan stopped.
- `jobs` (list)
- `location` (text): The location that was looked up.
- `output_detail` (text): Which of the two display choices the step ran with, 'summary' or 'full'.
- `result_count` (number): How many jobs matched.
- `scanned_count` (number): How many jobs were read from the board to find them.
- `scanned_pages` (number): How many pages that took.
- `terms` (text): Arbeitnow's terms note, which asks for a link back.
- `truncated` (true/false): Whether the limit was reached with jobs still unread, so there may be more matches.

**Example output**

```json
{
  "has_more": true,
  "jobs": [
    {
      "age_days": 3,
      "company_name": "ateeca",
      "created_at": 1787217300,
      "created_at_iso": "2026-08-20T09:15:00Z",
      "description": "Key Requirement:\no Hands-on experience on Building interfaces on any ESB platform.\no Experience in Core Java, Messaging (JMS), Web API: SOAP, REST and authentication methods such as OAuth and SAML.\n\nAll your information will be kept confidential according to EEO guidelines.",
      "description_truncated": false,
      "job_types": [
        "Mid-senior",
        "contract"
      ],
      "location": "Leicester",
      "remote": false,
      "slug": "mulesoft-developer-ateeca-178727",
      "tags": [
        "Information technology and services",
        "information technology"
      ],
      "title": "Mulesoft Developer",
      "url": "https://arbeitnow.com/view/mulesoft-developer-ateeca-178727"
    }
  ],
  "location": "Leicester",
  "output_detail": "summary",
  "result_count": 1,
  "scanned_count": 300,
  "scanned_pages": 3,
  "terms": "This is a free public API for jobs, please do not abuse. I would appreciate linking back to the site. By using the API, you agree to the terms of service present on Arbeitnow.com",
  "truncated": false
}
```

### List new jobs

List everything posted since a given moment. This is the step for a scheduled run: hand it the time the last run finished and it returns only what has appeared since, so a daily digest or an alert never repeats itself. The board updates every hour.

**Inputs**

- Posted since (`since`, date and time, required): Only return jobs posted after this date and time. A date on its own means midnight, and a time with no time zone is read as UTC, which is what the board posts in. A job's own 'created_at' number works here too, so the newest job from a previous run can be fed straight back in.
- Remote or on-site (`remote`, text): Only return jobs the board marks as remote, or only ones it does not. Leave empty for both. One of: `remote` (Remote only), `onsite` (On-site only).
- Visa sponsorship (`visa_sponsorship`, text): Narrow to jobs that offer visa sponsorship, or to ones that do not. This is the one filter Arbeitnow applies itself, through its 'visa_sponsorship' query parameter, so which postings qualify is its call and not this integration's. Leave empty for both. One of: `true` (Offers visa sponsorship), `false` (Does not offer visa sponsorship).
- Number of jobs (`max_results`, number): How many jobs to return, from 1 to 200. The scan stops as soon as this is filled, so a small number is also a quick one. Defaults to 25. From 1 to 200. Default: `25`.
- Pages to read (`max_pages`, number): How much of the board to look through, from 1 to 10 pages of about a hundred jobs each. The API has no search of its own, so a filter is applied to the jobs this reads: more pages reach further back but take longer, and a page carries every description, so the first read of one is a few seconds. Later steps in the same run reuse the pages already read, so a workflow pays for each page once. Defaults to 3. From 1 to 10. Default: `3`.
- Description length (`description_characters`, number): How much of each job's description to return, as plain text with the HTML removed, up to 20,000 characters. Set 0 to leave descriptions out entirely when a step only needs titles and links. Defaults to 600. From 0 to 20000. Default: `600`.
- Show in the run (`output_detail`, text): How much of each row to print into the run output for a person to read. Every row that was returned is listed either way, however many that is: the result limit above decides that, not this field. 'One line each' gives the job, the company, the place, how long ago it was posted and the slug that 'Get a job' takes; 'Every field' adds the tags, the exact posting date, the link and the description. This only changes what is displayed, never what is saved: a later step sees the same data whichever is chosen. Defaults to one line each. One of: `summary` (One line each), `full` (Every field, over several lines each). Default: `summary`.

**Outputs**

- `has_more` (true/false): Whether the board had further pages when the scan stopped.
- `jobs` (list)
- `output_detail` (text): Which of the two display choices the step ran with, 'summary' or 'full'.
- `result_count` (number): How many jobs are newer.
- `scanned_count` (number): How many jobs were read from the board to find them.
- `scanned_pages` (number): How many pages that took.
- `since` (text): The cut-off that was used, as ISO-8601 UTC.
- `terms` (text): Arbeitnow's terms note, which asks for a link back.
- `truncated` (true/false): Whether the limit was reached with jobs still unread, so there may be more matches.

**Example output**

```json
{
  "has_more": true,
  "jobs": [
    {
      "age_days": 3,
      "company_name": "ateeca",
      "created_at": 1787217300,
      "created_at_iso": "2026-08-20T09:15:00Z",
      "description": "Key Requirement:\no Hands-on experience on Building interfaces on any ESB platform.\no Experience in Core Java, Messaging (JMS), Web API: SOAP, REST and authentication methods such as OAuth and SAML.\n\nAll your information will be kept confidential according to EEO guidelines.",
      "description_truncated": false,
      "job_types": [
        "Mid-senior",
        "contract"
      ],
      "location": "Leicester",
      "remote": false,
      "slug": "mulesoft-developer-ateeca-178727",
      "tags": [
        "Information technology and services",
        "information technology"
      ],
      "title": "Mulesoft Developer",
      "url": "https://arbeitnow.com/view/mulesoft-developer-ateeca-178727"
    }
  ],
  "output_detail": "summary",
  "result_count": 1,
  "scanned_count": 300,
  "scanned_pages": 3,
  "since": "2026-08-20T00:00:00Z",
  "terms": "This is a free public API for jobs, please do not abuse. I would appreciate linking back to the site. By using the API, you agree to the terms of service present on Arbeitnow.com",
  "truncated": false
}
```

### List remote jobs

List the jobs Arbeitnow marks as remote, newest first, optionally narrowed by keywords, employment type or how recently they were posted. Note that the board sets that flag on relatively few postings: in a sample of 300 jobs, two were flagged remote while 31 carried a 'Remote' tag. If this returns fewer than expected, read more pages, or try 'List jobs by tag' with 'Remote' alongside it.

**Inputs**

- Keywords (`keywords`, text): Words the job has to contain. Every word must appear, but it can appear anywhere in the posting: the title, the company, the location, the tags or the description. Leave empty to skip keyword matching.
- Job types (`job_types`, list): Only return jobs of one of these employment types or seniorities, matched case-insensitively anywhere in the value. The board files both under one field, so an employment type such as 'full time' and a seniority such as 'mid-senior' are both looked for here. The vocabulary is free text, so run 'List job types' to see which values are in use. Leave empty for every type.
- Posted in the last (days) (`posted_within_days`, number): Only return jobs posted this many days ago or less. Leave empty for everything the scan reads. From 1 to 365.
- Number of jobs (`max_results`, number): How many jobs to return, from 1 to 200. The scan stops as soon as this is filled, so a small number is also a quick one. Defaults to 25. From 1 to 200. Default: `25`.
- Pages to read (`max_pages`, number): How much of the board to look through, from 1 to 10 pages of about a hundred jobs each. The API has no search of its own, so a filter is applied to the jobs this reads: more pages reach further back but take longer, and a page carries every description, so the first read of one is a few seconds. Later steps in the same run reuse the pages already read, so a workflow pays for each page once. Defaults to 3. From 1 to 10. Default: `3`.
- Description length (`description_characters`, number): How much of each job's description to return, as plain text with the HTML removed, up to 20,000 characters. Set 0 to leave descriptions out entirely when a step only needs titles and links. Defaults to 600. From 0 to 20000. Default: `600`.
- Show in the run (`output_detail`, text): How much of each row to print into the run output for a person to read. Every row that was returned is listed either way, however many that is: the result limit above decides that, not this field. 'One line each' gives the job, the company, the place, how long ago it was posted and the slug that 'Get a job' takes; 'Every field' adds the tags, the exact posting date, the link and the description. This only changes what is displayed, never what is saved: a later step sees the same data whichever is chosen. Defaults to one line each. One of: `summary` (One line each), `full` (Every field, over several lines each). Default: `summary`.

**Outputs**

- `has_more` (true/false): Whether the board had further pages when the scan stopped.
- `jobs` (list)
- `keywords` (text): The keywords that were searched.
- `output_detail` (text): Which of the two display choices the step ran with, 'summary' or 'full'.
- `result_count` (number): How many jobs matched.
- `scanned_count` (number): How many jobs were read from the board to find them.
- `scanned_pages` (number): How many pages that took.
- `terms` (text): Arbeitnow's terms note, which asks for a link back.
- `truncated` (true/false): Whether the limit was reached with jobs still unread, so there may be more matches.

**Example output**

```json
{
  "has_more": true,
  "jobs": [
    {
      "age_days": 3,
      "company_name": "ateeca",
      "created_at": 1787217300,
      "created_at_iso": "2026-08-20T09:15:00Z",
      "description": "Key Requirement:\no Hands-on experience on Building interfaces on any ESB platform.\no Experience in Core Java, Messaging (JMS), Web API: SOAP, REST and authentication methods such as OAuth and SAML.\n\nAll your information will be kept confidential according to EEO guidelines.",
      "description_truncated": false,
      "job_types": [
        "Mid-senior",
        "contract"
      ],
      "location": "Leicester",
      "remote": false,
      "slug": "mulesoft-developer-ateeca-178727",
      "tags": [
        "Information technology and services",
        "information technology"
      ],
      "title": "Mulesoft Developer",
      "url": "https://arbeitnow.com/view/mulesoft-developer-ateeca-178727"
    }
  ],
  "keywords": "",
  "output_detail": "summary",
  "result_count": 1,
  "scanned_count": 300,
  "scanned_pages": 3,
  "terms": "This is a free public API for jobs, please do not abuse. I would appreciate linking back to the site. By using the API, you agree to the terms of service present on Arbeitnow.com",
  "truncated": false
}
```

### List tags

List the industry and field tags the board is actually using, most jobs first, with a count for each. Tags are free text and nowhere documented, so this is how to find the exact wording to hand to 'List jobs by tag'. Spellings that differ only in capitalisation are counted as one.

**Inputs**

- Pages to read (`max_pages`, number): How much of the board to count, from 1 to 10 pages of about a hundred jobs each. The counts describe the jobs this reads, not the whole board, and 'scanned_count' says how many that was. Pages already read by an earlier step in the same run are reused, so the three counting actions together cost one pass, not three. Defaults to 3. From 1 to 10. Default: `3`.
- Number of rows (`max_results`, number): How many rows to return, most jobs first, from 1 to 500. Defaults to 50. From 1 to 500. Default: `50`.
- Show in the run (`output_detail`, text): How much of each row to print into the run output for a person to read. Every row that was returned is listed either way, however many that is: the result limit above decides that, not this field. 'One line each' gives the job, the company, the place, how long ago it was posted and the slug that 'Get a job' takes; 'Every field' adds the tags, the exact posting date, the link and the description. This only changes what is displayed, never what is saved: a later step sees the same data whichever is chosen. Defaults to one line each. One of: `summary` (One line each), `full` (Every field, over several lines each). Default: `summary`.

**Outputs**

- `has_more` (true/false): Whether the board had further pages when the count stopped.
- `output_detail` (text): Which of the two display choices the step ran with, 'summary' or 'full'.
- `result_count` (number): How many rows are returned.
- `scanned_count` (number): How many jobs were counted.
- `scanned_pages` (number): How many pages that took.
- `tag_count` (number): How many distinct tags were found.
- `tags` (list)
- `terms` (text): Arbeitnow's terms note, which asks for a link back.

**Example output**

```json
{
  "has_more": true,
  "output_detail": "summary",
  "result_count": 2,
  "scanned_count": 300,
  "scanned_pages": 3,
  "tag_count": 47,
  "tags": [
    {
      "job_count": 64,
      "remote_count": 21,
      "tag": "Information technology and services"
    },
    {
      "job_count": 18,
      "remote_count": 0,
      "tag": "Retail"
    }
  ],
  "terms": "This is a free public API for jobs, please do not abuse. I would appreciate linking back to the site. By using the API, you agree to the terms of service present on Arbeitnow.com"
}
```

### List visa sponsorship jobs

List the jobs that offer visa sponsorship, which is what Arbeitnow is best known for. This is the one narrowing the API does itself, so which postings qualify is Arbeitnow's call: the request carries its 'visa_sponsorship' parameter and any keywords or remote filter are applied to what comes back.

**Inputs**

- Keywords (`keywords`, text): Words the job has to contain. Every word must appear, but it can appear anywhere in the posting: the title, the company, the location, the tags or the description. Leave empty to skip keyword matching.
- Remote or on-site (`remote`, text): Only return jobs the board marks as remote, or only ones it does not. Leave empty for both. One of: `remote` (Remote only), `onsite` (On-site only).
- Number of jobs (`max_results`, number): How many jobs to return, from 1 to 200. The scan stops as soon as this is filled, so a small number is also a quick one. Defaults to 25. From 1 to 200. Default: `25`.
- Pages to read (`max_pages`, number): How much of the board to look through, from 1 to 10 pages of about a hundred jobs each. The API has no search of its own, so a filter is applied to the jobs this reads: more pages reach further back but take longer, and a page carries every description, so the first read of one is a few seconds. Later steps in the same run reuse the pages already read, so a workflow pays for each page once. Defaults to 3. From 1 to 10. Default: `3`.
- Description length (`description_characters`, number): How much of each job's description to return, as plain text with the HTML removed, up to 20,000 characters. Set 0 to leave descriptions out entirely when a step only needs titles and links. Defaults to 600. From 0 to 20000. Default: `600`.
- Show in the run (`output_detail`, text): How much of each row to print into the run output for a person to read. Every row that was returned is listed either way, however many that is: the result limit above decides that, not this field. 'One line each' gives the job, the company, the place, how long ago it was posted and the slug that 'Get a job' takes; 'Every field' adds the tags, the exact posting date, the link and the description. This only changes what is displayed, never what is saved: a later step sees the same data whichever is chosen. Defaults to one line each. One of: `summary` (One line each), `full` (Every field, over several lines each). Default: `summary`.

**Outputs**

- `has_more` (true/false): Whether the board had further pages when the scan stopped.
- `jobs` (list)
- `keywords` (text): The keywords that were searched.
- `output_detail` (text): Which of the two display choices the step ran with, 'summary' or 'full'.
- `result_count` (number): How many jobs matched.
- `scanned_count` (number): How many jobs were read from the board to find them.
- `scanned_pages` (number): How many pages that took.
- `terms` (text): Arbeitnow's terms note, which asks for a link back.
- `truncated` (true/false): Whether the limit was reached with jobs still unread, so there may be more matches.
- `visa_sponsorship` (true/false): Always true: this action asks Arbeitnow for those jobs.

**Example output**

```json
{
  "has_more": true,
  "jobs": [
    {
      "age_days": 3,
      "company_name": "ateeca",
      "created_at": 1787217300,
      "created_at_iso": "2026-08-20T09:15:00Z",
      "description": "Key Requirement:\no Hands-on experience on Building interfaces on any ESB platform.\no Experience in Core Java, Messaging (JMS), Web API: SOAP, REST and authentication methods such as OAuth and SAML.\n\nAll your information will be kept confidential according to EEO guidelines.",
      "description_truncated": false,
      "job_types": [
        "Mid-senior",
        "contract"
      ],
      "location": "Leicester",
      "remote": false,
      "slug": "mulesoft-developer-ateeca-178727",
      "tags": [
        "Information technology and services",
        "information technology"
      ],
      "title": "Mulesoft Developer",
      "url": "https://arbeitnow.com/view/mulesoft-developer-ateeca-178727"
    }
  ],
  "keywords": "",
  "output_detail": "summary",
  "result_count": 1,
  "scanned_count": 300,
  "scanned_pages": 3,
  "terms": "This is a free public API for jobs, please do not abuse. I would appreciate linking back to the site. By using the API, you agree to the terms of service present on Arbeitnow.com",
  "truncated": false,
  "visa_sponsorship": true
}
```

### Search jobs

Search the Arbeitnow job board on keywords and any combination of filters: remote or on-site, visa sponsorship, industry tags, employment type or seniority, company, location, and how recently the job was posted. The API has no search of its own, so this reads the newest pages of the board and matches each job here; 'Pages to read' sets how far back it looks and the result says how much it read and whether more was left.

**Inputs**

- Keywords (`keywords`, text): Words the job has to contain. Every word must appear, but it can appear anywhere in the posting: the title, the company, the location, the tags or the description. Leave empty to skip keyword matching.
- Remote or on-site (`remote`, text): Only return jobs the board marks as remote, or only ones it does not. Leave empty for both. One of: `remote` (Remote only), `onsite` (On-site only).
- Visa sponsorship (`visa_sponsorship`, text): Narrow to jobs that offer visa sponsorship, or to ones that do not. This is the one filter Arbeitnow applies itself, through its 'visa_sponsorship' query parameter, so which postings qualify is its call and not this integration's. Leave empty for both. One of: `true` (Offers visa sponsorship), `false` (Does not offer visa sponsorship).
- Tags (`tags`, list): Only return jobs carrying one of these tags, matched case-insensitively anywhere in the tag. The board's tags are free text and the vocabulary changes with what is posted, so run 'List tags' first to see which ones are in use rather than guessing: a tag nobody is using returns nothing. Leave empty for every tag.
- Job types (`job_types`, list): Only return jobs of one of these employment types or seniorities, matched case-insensitively anywhere in the value. The board files both under one field, so an employment type such as 'full time' and a seniority such as 'mid-senior' are both looked for here. The vocabulary is free text, so run 'List job types' to see which values are in use. Leave empty for every type.
- Company (`company`, text): Only return jobs whose company name contains this text, matched case-insensitively. Leave empty for every company.
- Location (`location`, text): Only return jobs whose location contains this text, matched case-insensitively. Leave empty for everywhere.
- Posted in the last (days) (`posted_within_days`, number): Only return jobs posted this many days ago or less. Leave empty for everything the scan reads. From 1 to 365.
- Number of jobs (`max_results`, number): How many jobs to return, from 1 to 200. The scan stops as soon as this is filled, so a small number is also a quick one. Defaults to 25. From 1 to 200. Default: `25`.
- Pages to read (`max_pages`, number): How much of the board to look through, from 1 to 10 pages of about a hundred jobs each. The API has no search of its own, so a filter is applied to the jobs this reads: more pages reach further back but take longer, and a page carries every description, so the first read of one is a few seconds. Later steps in the same run reuse the pages already read, so a workflow pays for each page once. Defaults to 3. From 1 to 10. Default: `3`.
- Description length (`description_characters`, number): How much of each job's description to return, as plain text with the HTML removed, up to 20,000 characters. Set 0 to leave descriptions out entirely when a step only needs titles and links. Defaults to 600. From 0 to 20000. Default: `600`.
- Show in the run (`output_detail`, text): How much of each row to print into the run output for a person to read. Every row that was returned is listed either way, however many that is: the result limit above decides that, not this field. 'One line each' gives the job, the company, the place, how long ago it was posted and the slug that 'Get a job' takes; 'Every field' adds the tags, the exact posting date, the link and the description. This only changes what is displayed, never what is saved: a later step sees the same data whichever is chosen. Defaults to one line each. One of: `summary` (One line each), `full` (Every field, over several lines each). Default: `summary`.

**Outputs**

- `has_more` (true/false): Whether the board had further pages when the scan stopped.
- `jobs` (list)
- `keywords` (text): The keywords that were searched.
- `output_detail` (text): Which of the two display choices the step ran with, 'summary' or 'full'.
- `result_count` (number): How many jobs matched.
- `scanned_count` (number): How many jobs were read from the board to find them.
- `scanned_pages` (number): How many pages that took.
- `terms` (text): Arbeitnow's terms note, which asks for a link back.
- `truncated` (true/false): Whether the limit was reached with jobs still unread, so there may be more matches.

**Example output**

```json
{
  "has_more": true,
  "jobs": [
    {
      "age_days": 3,
      "company_name": "ateeca",
      "created_at": 1787217300,
      "created_at_iso": "2026-08-20T09:15:00Z",
      "description": "Key Requirement:\no Hands-on experience on Building interfaces on any ESB platform.\no Experience in Core Java, Messaging (JMS), Web API: SOAP, REST and authentication methods such as OAuth and SAML.\n\nAll your information will be kept confidential according to EEO guidelines.",
      "description_truncated": false,
      "job_types": [
        "Mid-senior",
        "contract"
      ],
      "location": "Leicester",
      "remote": false,
      "slug": "mulesoft-developer-ateeca-178727",
      "tags": [
        "Information technology and services",
        "information technology"
      ],
      "title": "Mulesoft Developer",
      "url": "https://arbeitnow.com/view/mulesoft-developer-ateeca-178727"
    }
  ],
  "keywords": "mulesoft developer",
  "output_detail": "summary",
  "result_count": 1,
  "scanned_count": 300,
  "scanned_pages": 3,
  "terms": "This is a free public API for jobs, please do not abuse. I would appreciate linking back to the site. By using the API, you agree to the terms of service present on Arbeitnow.com",
  "truncated": false
}
```
