# Remote Jobs Scraper - Himalayas, RemoteOK, WWR, Jobicy (`george.the.developer/remote-jobs-scraper`) Actor

Scrape remote jobs from Himalayas, RemoteOK, We Work Remotely and Jobicy into one deduped feed with salaries normalized to annual USD. Filter by keyword, seniority, employment type and salary. Pay per job row, salary normalization included. Callable from any MCP client (Claude, Cursor, ChatGPT).

- **URL**: https://apify.com/george.the.developer/remote-jobs-scraper.md
- **Developed by:** [George Kioko](https://apify.com/george.the.developer) (community)
- **Categories:** Jobs, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Remote Jobs Scraper: Himalayas, RemoteOK, We Work Remotely and Jobicy in One Feed (Salaries in USD)

> **One row per job. Salaries normalized to annual USD. Every apply link goes to the original posting.** Single-board scrapers hand you four overlapping feeds with four salary formats and leave the merge to you.
> You pay $0.001 per job row that has a title, company, apply link and posting date and passes your filters. Deduplication, salary normalization and empty runs are free.

**Remote Jobs Scraper is an Apify Actor that pulls remote job listings from the public Himalayas, RemoteOK, We Work Remotely and Jobicy feeds and returns one deduplicated JSON row per job with the boards it appeared on, normalized seniority and employment type, and salary converted to annual USD with a confidence flag, without a browser, a login or an API key.** It is built for **remote job board** builders, recruiters running a **remote jobs scraper** on a schedule, and analysts who need a **job listings API** with **salary data** they can compare across sources.

Four boards in one feed. Cross-board dedupe with provenance. Salary in annual USD with a confidence flag. **$1.00 per 1,000 jobs.** MCP ready for AI agents.

### Pricing

| Event | Price | You pay when |
|---|---|---|
| `job-listed` | $0.001 | A deduplicated job row is delivered that has a title, company, original apply link and posting date and passes every filter you set |
| `apify-actor-start` | $0.00005 | The run starts (one event per GB of memory, the default 512 MB is one event) |

**$1.00 per 1,000 jobs.** Rows below the bar are never charged. Deduplication, salary normalization, seniority mapping and the description text are included in the row price. A run that matches nothing writes one free row explaining why and costs only the start fee.

Worked example. `keywords` set to software engineer, `maxResults` 200, 30 days of postings. 200 rows delivered cost $0.20 plus the $0.00005 start fee, so **$0.20** in total.

### Salaries you can compare

Every board states pay differently. Himalayas and Jobicy send min, max, currency and period. RemoteOK sends two numbers and nothing else. We Work Remotely sends no salary at all. This Actor converts what it finds to annual USD and tells you how much to trust it.

```json
{
  "salary_min_usd": 129300,
  "salary_max_usd": 177800,
  "salary_confidence": "exact",
  "salary_currency_raw": "USD",
  "salary_period_raw": "annual"
}
```

`exact` means the source stated USD per year. `converted` means a currency or period conversion was applied (EUR, GBP, hourly, monthly and so on) using a fixed rate table. `none` means the posting states no salary. In a typical run about one third of rows carry a salary.

When the same job appears on several boards the row keeps the best salary and lists every board in `seen_on`.

### How it works

```
   Himalayas API          RemoteOK API        We Work Remotely RSS       Jobicy API
   cursor walk down       100 newest jobs     main + 6 category feeds    100 newest jobs
   to your date cutoff    browser UA          hourly TTL
         |                     |                      |                      |
         +---------------------+----------+-----------+----------------------+
                                          v
                     one row shape per job (title, company, apply link,
                     location, type, salary fields, tags, dates)
                                          |
                                          v
                  fingerprint = company + title  ->  duplicates merged
                  (seen_on lists every board, the best salary wins)
                                          |
                                          v
              salary to annual USD + confidence (exact / converted / none)
              seniority and employment type from board labels or the title
                                          |
                                          v
             your filters (keywords, posted within, salary, type, seniority)
                      | pass                                 | fail
                      v                                      v
            charged job-listed row ($0.001)          dropped, never charged
                      |
                      v
              newest first, capped at maxResults, written to the dataset
```

### What data does it extract?

Title, company, original apply link, source board and every board the job was seen on, raw location and a `remote_region`, normalized `employment_type` (full\_time, part\_time, contract, internship, freelance, unknown) and `seniority` (entry, mid, senior, lead, executive, unknown), salary min and max in annual USD with the raw currency and period and a confidence flag, tags, posting date, expiry date where the board states one, `data_age_hours`, and the description as plain text and HTML.

### What is NOT returned

- Emails, phone numbers, recruiter names or any contact data
- Jobs from LinkedIn, Indeed, Glassdoor or company career sites
- Remotive listings (their API terms do not allow aggregation)
- Jobs older than `postedWithinDays`
- A salary for every row. Roughly two thirds of postings state none and are flagged `salary_confidence` none
- Applicant counts, hiring manager data or application status
- Cleaned RemoteOK results without keywords. The public RemoteOK feed now includes non-remote local listings. Set keywords to filter them out

### Quick start

1. Open the Actor and keep the default input, or paste the JSON below.
2. Click Start. A 200-row run finishes in about one to three minutes.
3. Download the dataset as JSON, CSV or Excel, or read it from the API.

```json
{
  "keywords": ["software engineer"],
  "sources": ["himalayas", "remoteok", "weworkremotely", "jobicy"],
  "maxResults": 200,
  "postedWithinDays": 30,
  "includeDescription": true
}
```

### Input

```json
{
  "keywords": ["product designer", "ux designer"],
  "sources": ["himalayas", "weworkremotely", "jobicy"],
  "maxResults": 500,
  "postedWithinDays": 14,
  "minSalaryUsd": 90000,
  "requireSalary": false,
  "employmentType": "full_time",
  "seniority": "senior",
  "includeDescription": false
}
```

| Field | Type | Default | What it does |
|---|---|---|---|
| `keywords` | array of strings | `["software engineer"]` | Case-insensitive match on title and tags. A job matches if any keyword matches. Empty returns every job |
| `sources` | array | all four | `himalayas`, `remoteok`, `weworkremotely`, `jobicy` |
| `maxResults` | integer | 200 | Rows returned after dedupe and filters. Caps what you pay |
| `postedWithinDays` | integer | 30 | Only jobs posted in the last N days |
| `minSalaryUsd` | integer | none | Drops jobs whose normalized annual USD maximum is below this. Jobs without a salary are kept unless `requireSalary` is on |
| `requireSalary` | boolean | false | Only jobs that state a salary |
| `employmentType` | string | none | `full_time`, `part_time`, `contract`, `internship`, `freelance` |
| `seniority` | string | none | `entry`, `mid`, `senior`, `lead`, `executive` |
| `includeDescription` | boolean | true | Include `description_text` and `description_html` |

### Output

One real row from a live run.

```json
{
  "id": "c5afe4d720a91913",
  "title": "Solidity Compiler Frontend Engineer",
  "company": "CertiK",
  "apply_url": "https://jobicy.com/jobs/142139-solidity-compiler-frontend-engineer",
  "source": "jobicy",
  "seen_on": [
    "jobicy"
  ],
  "location_raw": "USA",
  "remote_region": "USA",
  "employment_type": "full_time",
  "seniority": "unknown",
  "salary_min_usd": 140000,
  "salary_max_usd": 220000,
  "salary_confidence": "exact",
  "salary_currency_raw": "USD",
  "salary_period_raw": "yearly",
  "tags": [
    "Software Engineering"
  ],
  "posted_at": "2026-08-29T04:35:15.000Z",
  "expires_at": null,
  "data_age_hours": 8,
  "scraped_at": "2026-08-29T12:53:21.716Z",
  "description_text": "About the Company One of the fastest-growing and most trusted companies in blockchain security, CertiK is a true market leader. To date, CertiK has worked with over 4,798 clients, secured over $597 billion worth of digital assets, and has monitored over 17,000 projects. Our clients include leading projects such as Aave, Polygon, Yearn, and Chiliz.\nInvestors = Insight Partners, Sequoia, Tiger Global, Coatue Management, Lightspeed, Advent International, SoftBank, Hillhouse Capital, Goldman Sachs, Shunwei Capital, IDG Capital, Wing, Legend Star, Danhua Capital and other investors.\nAbout the Role We are seeking an experienced Solidity Compiler Frontend Engineer to join our team working on cutting-edge blockchain compiler infrastructure and formal verification tools. You will participate in developing and optimizing the frontend components of Solidity compilation pipelines, with a focus on static analysis, type checking, and integration with formal verification systems.\nResponsibilities\nDesign and implement frontend components for the Solidity compiler, including lexical analysis, parsing, AST generation, and semantic analysis.\nOptimize compiler performance and improve error reporting and diagnostics.\nDevelop integration layers between the Solidity compiler and formal verification tools.\nContribute to the evolution of Solidity language features and specification.\nCollaborate with security researchers to implement static analysis and security checks.\nMaintain and improve existing compiler infrastructure and tooling.\nRequirements\n3+ years of professional experience in Solidity compiler development or related compiler projects (e.g., EVM-based languages, smart contract compilers)\nStrong proficiency in Java with deep understanding of Java based compiler development and optimization\nSolid foundation in compiler theory, including parsing techniques, type systems, and intermediate representations\nExperience with formal methods or formal verification tools (e.g., SMT solvers, theorem provers, or verification frameworks)\nStrong understanding of the Ethereum Virtual Machine (EVM) and smart contract execution models\nExcellent problem-solving skills and attention to detail\nPreferred Qualifications\nExperience with LLVM or similar compiler infrastructure\nKnowledge of programming language semantics and type theory\nContributions to open-source compiler projects\nExperience with Solidity or other blockchain programming languages\nWhat We Offer\nOpportunity to shape the national conversation on blockchain and security.\nCollaborate with industry-leading security researchers, technologists, and global institutions.\nFlexible work environment and mission-driven culture.\nCompensation: If the role is performed in the US, the target annual compensation is $140,000 - $220,000. The exact compensation at which this job is filled will be determined by the skills and experience of qualified candidates.\n#blockchain#startups#hiring\nCertiK accepts applications for this position on an ongoing basis.\nCertiK is proud to offer medical, vision, and dental insurance, 401(k) plan with company matching, life and accidental death and dismemberment insurance, HSA (with high deductible plan), FSA, and other benefits to all full-time employees, along with flexible paid time off and holidays. CertiK also offers a variable commission program for business development sales roles.\nIn compliance with federal law, all persons hired will be required to verify identity and eligibility to work in the United States and to complete the required employment eligibility verification form upon hire.\nCertiK is proud to be an equal opportunity employer. We will not discriminate against any applicant or employee on the basis of age, race, color, creed, religion, sex, sexual orientation, gender, gender identity or expression, medical condition, national origin, ancestry, citizenship, marital status or civil partnership/union status, physical or mental disability, pregnancy, childbirth, genetic information, military and veteran status, or any other basis prohibited by applicable federal, state or local law.\nCertiK will consider for employment qualified applicants with criminal histories in a manner consistent with local and federal requirements. https://www.eeoc.gov/sites/default/files/migrated_files/employers/poster_screen_reader_optimized.pdf\nAll CertiK employees are expected to actively support diversity on their teams, and in the Company.",
  "description_html": "<b>About the Company</b><p>One of the fastest-growing and most trusted companies in blockchain security, CertiK is a true market leader. To date, CertiK has worked with over 4,798 clients, secured over $597 billion worth of digital assets, and has monitored over 17,000 projects. Our clients include leading projects such as Aave, Polygon, Yearn, and Chiliz.<br>Investors = Insight Partners, Sequoia, Tiger Global, Coatue Management, Lightspeed, Advent International, SoftBank, Hillhouse Capital, Goldman Sachs, Shunwei Capital, IDG Capital, Wing, Legend Star, Danhua Capital and other investors.<br><b>About the Role</b>We are seeking an experienced Solidity Compiler Frontend Engineer to join our team working on cutting-edge blockchain compiler infrastructure and formal verification tools. You will participate in developing and optimizing the frontend components of Solidity compilation pipelines, with a focus on static analysis, type checking, and integration with formal verification systems.\r\n</p><h2>Responsibilities</h2><ul>\r\n<li>Design and implement frontend components for the Solidity compiler, including lexical analysis, parsing, AST generation, and semantic analysis.</li><li>Optimize compiler performance and improve error reporting and diagnostics. </li><li>Develop integration layers between the Solidity compiler and formal verification tools. </li><li>Contribute to the evolution of Solidity language features and specification. </li><li>Collaborate with security researchers to implement static analysis and security checks. </li><li>Maintain and improve existing compiler infrastructure and tooling.</li></ul><h2>Requirements</h2><ul>\r\n<li>3+ years of professional experience in Solidity compiler development or related compiler projects (e.g., EVM-based languages, smart contract compilers) </li><li>Strong proficiency in Java with deep understanding of Java based compiler development and optimization</li><li>Solid foundation in compiler theory, including parsing techniques, type systems, and intermediate representations </li><li>Experience with formal methods or formal verification tools (e.g., SMT solvers, theorem provers, or verification frameworks) </li><li>Strong understanding of the Ethereum Virtual Machine (EVM) and smart contract execution models </li><li>Excellent problem-solving skills and attention to detail</li></ul><h2>Preferred Qualifications</h2><ul>\r\n<li>Experience with LLVM or similar compiler infrastructure </li><li>Knowledge of programming language semantics and type theory </li><li>Contributions to open-source compiler projects</li><li>Experience with Solidity or other blockchain programming languages</li></ul><h2>What We Offer</h2><ul>\r\n<li>Opportunity to shape the national conversation on blockchain and security.</li><li>Collaborate with industry-leading security researchers, technologists, and global institutions.</li><li>Flexible work environment and mission-driven culture.</li></ul><b>Compensation:</b><p> If the role is performed in the US, the target annual compensation is $140,000 - $220,000. The exact compensation at which this job is filled will be determined by the skills and experience of qualified candidates.<br>#blockchain#startups#hiring<br>CertiK accepts applications for this position on an ongoing basis. <br>CertiK is proud to offer medical, vision, and dental insurance, 401(k) plan with company matching, life and accidental death and dismemberment insurance, HSA (with high deductible plan), FSA, and other benefits to all full-time employees, along with flexible paid time off and holidays. CertiK also offers a variable commission program for business development sales roles.<br>In compliance with federal law, all persons hired will be required to verify identity and eligibility to work in the United States and to complete the required employment eligibility verification form upon hire.<br>CertiK is proud to be an equal opportunity employer. We will not discriminate against any applicant or employee on the basis of age, race, color, creed, religion, sex, sexual orientation, gender, gender identity or expression, medical condition, national origin, ancestry, citizenship, marital status or civil partnership/union status, physical or mental disability, pregnancy, childbirth, genetic information, military and veteran status, or any other basis prohibited by applicable federal, state or local law.<br>CertiK will consider for employment qualified applicants with criminal histories in a manner consistent with local and federal requirements.<a href=\"https://www.eeoc.gov/sites/default/files/migrated_files/employers/poster_screen_reader_optimized.pdf\" rel=\"nofollow ugc noopener\" target=\"_blank\">https://www.eeoc.gov/sites/default/files/migrated_files/employers/poster_screen_reader_optimized.pdf</a><br>All CertiK employees are expected to actively support diversity on their teams, and in the Company.</p>"
}
```

### Use from Claude, ChatGPT and any MCP agent

Add the Actor as a tool through the Apify MCP server at `https://mcp.apify.com/?tools=george.the.developer/remote-jobs-scraper`. Ask your agent for senior remote data engineering jobs posted this week with a stated salary and it will fill the input for you.

From code with the Apify client.

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('george.the.developer/remote-jobs-scraper').call({
    keywords: ['data engineer'],
    maxResults: 100,
    postedWithinDays: 7,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.length, 'jobs');
```

With curl, one request that waits for the run and returns the rows.

```bash
curl -X POST "https://api.apify.com/v2/acts/george.the.developer~remote-jobs-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"keywords": ["data engineer"], "maxResults": 100, "postedWithinDays": 7}'
```

### Integrations

**Clay.** Add an HTTP API enrichment pointing at the dataset items URL of your last run (`https://api.apify.com/v2/datasets/DATASET_ID/items?format=json`) and map `title`, `company`, `apply_url`, `salary_min_usd`, `salary_max_usd` and `seen_on` to columns.

**n8n and Make.** Use the Apify node or module, pick this Actor, paste the input JSON, then add a Dataset node to read the rows. Schedule it daily with `postedWithinDays` set to 1 to get only new postings.

**Google Sheets.** Export the dataset as CSV from the run page or use the Apify Google Sheets integration on the run.

### Use cases

- **Remote job board builders** refresh a niche board daily from four sources with duplicates already merged and salaries already comparable.
- **Recruiters and sourcers** watch competitor hiring with `keywords` set to a role and `postedWithinDays` set to 1.
- **Compensation analysts** pull `requireSalary` rows for a role and chart `salary_min_usd` and `salary_max_usd` over time.
- **Job seekers and career coaches** filter `seniority` and `minSalaryUsd` and read only the postings worth applying to.
- **AI agents** call it from an MCP client to answer which remote design jobs pay over 120k this week.

### Data sources and attribution

- Himalayas public jobs API. Rows link to the original posting on himalayas.app.
- RemoteOK public API. Remote OK is a source of this data. Rows link back to the posting on remoteok.com as their terms ask.
- We Work Remotely RSS feeds. Rows link to the posting on weworkremotely.com.
- Jobicy public API v2. Jobicy is credited as a source and apply links go to the original job URL as their notice asks.

All four are public feeds. No login, no cookies, no proxies.

### FAQ

#### Does it dedupe the same job across boards?

Yes. Jobs are fingerprinted on company plus title. A job seen on three boards becomes one row with all three in `seen_on`. Two different openings with the identical title at one company will merge as well.

#### Why is salary\_confidence none on most rows?

Because most postings state no salary. Roughly one third of rows carry one. Use `requireSalary` to keep only those.

#### Can I get the whole Himalayas archive?

Yes, up to your `postedWithinDays` cutoff and a safety cap of 8,000 jobs per run. Set `postedWithinDays` to 365 and a large `maxResults` for the widest pull.

#### Does it charge for rows that fail my filters?

No. Only rows that pass every filter and have a title, company, apply link and posting date are charged. Filtered rows, duplicates and empty runs cost nothing beyond the start fee.

#### Why is RemoteOK sometimes noisy?

The public RemoteOK feed currently carries local non-remote listings alongside remote ones. With keywords set they are filtered out. Without keywords you will see them.

#### Does it scrape LinkedIn or Indeed?

No. Only the four public feeds listed above.

# Actor input Schema

## `keywords` (type: `array`):

Match against job title and tags, case-insensitive. A job matches if ANY keyword matches. Leave empty to return every job. Example: software engineer, product designer.

## `sources` (type: `array`):

Which boards to pull from. Default is all four.

## `maxResults` (type: `integer`):

Maximum job rows to return after deduplication and filtering. This caps what you are charged for.

## `postedWithinDays` (type: `integer`):

Only jobs posted in the last N days.

## `minSalaryUsd` (type: `integer`):

Drop jobs whose normalized annual USD maximum is below this. Jobs with no salary are kept unless Require salary is on.

## `requireSalary` (type: `boolean`):

Only return jobs that state a salary.

## `employmentType` (type: `string`):

Optional filter on the normalized employment type.

## `seniority` (type: `string`):

Optional filter on the normalized seniority level.

## `includeDescription` (type: `boolean`):

Include the full job description as plain text and HTML. Turn off for lighter rows.

## Actor input object example

```json
{
  "keywords": [
    "software engineer"
  ],
  "sources": [
    "himalayas",
    "remoteok",
    "weworkremotely",
    "jobicy"
  ],
  "maxResults": 200,
  "postedWithinDays": 30,
  "requireSalary": false,
  "includeDescription": true
}
```

# Actor output Schema

## `jobs` (type: `string`):

One row per job with title, company, original apply link, boards it was seen on, normalized employment type and seniority, salary in annual USD with a confidence flag, tags, posting and expiry dates and the description.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "keywords": [
        "software engineer"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("george.the.developer/remote-jobs-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "keywords": ["software engineer"] }

# Run the Actor and wait for it to finish
run = client.actor("george.the.developer/remote-jobs-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "keywords": [
    "software engineer"
  ]
}' |
apify call george.the.developer/remote-jobs-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,george.the.developer/remote-jobs-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/mJZV4npGgcFom9UJY/builds/cnQFzgPHJ3roQkrsx/openapi.json
