# InfoJobs Spain Job Scraper: Ofertas de Empleo (`getascraper/infojobs-spain-scraper`) Actor

Scrape InfoJobs Spain job offers (ofertas de empleo) by keyword, province, city, category, remote or hybrid work, contract, hours, education, minimum salary and date. Get structured pay, full description, skills and languages as JSON, CSV or Excel. Monitor only new offers on a schedule.

- **URL**: https://apify.com/getascraper/infojobs-spain-scraper.md
- **Developed by:** [GetAScraper](https://apify.com/getascraper) (community)
- **Categories:** Jobs, Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.71 / 1,000 job offers

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## 💼 InfoJobs Spain Job Scraper: Ofertas de Empleo

<table width="100%" style="margin-bottom:0">
<tr>
<td style="padding:24px 28px;background:#EEF6FB;border:1px solid #C5DFEF;border-top:4px solid #2088C2;border-radius:12px">
<span style="font-size:23px;font-weight:800;color:#1C1917;line-height:1.3">Get the InfoJobs offers you actually want, with pay, full text and only the new ones each day</span><br>
<span style="font-size:15px;color:#57534E;line-height:1.6">Filter Spain's largest job board by place, category, remote work, contract, hours, education, salary and posting date. Every row comes back clean, with structured salary and the skills mentioned.</span>
</td>
</tr>
</table>
<table width="100%" style="margin-top:0">
<tr>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #C5DFEF;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#16688F">🎯 Filters that narrow fast</span><br>
<span style="font-size:12px;color:#57534E">Province, city, category, remote, contract, hours, education, salary, date</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #C5DFEF;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#16688F">💶 Pay as numbers</span><br>
<span style="font-size:12px;color:#57534E">Minimum, maximum, per year or month, gross. Left out when not advertised</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #C5DFEF;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#16688F">🔔 New-offer monitor</span><br>
<span style="font-size:12px;color:#57534E">Name a search, schedule it, and receive only offers you have not seen</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #C5DFEF;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#16688F">🧰 Skills spotted for you</span><br>
<span style="font-size:12px;color:#57534E">Full description plus skills, languages and years of experience it mentions</span>
</td>
</tr>
</table>

### 🔍 What does InfoJobs Spain Scraper do?

InfoJobs Spain Scraper collects **ofertas de empleo** from InfoJobs (infojobs.net), the biggest job board in Spain. Search by keyword, or narrow by province, city, job category, on-site, hybrid or fully remote work, contract type, working hours, education level, minimum gross salary and how recently the offer was posted. You can also paste an InfoJobs search link you already built. Each offer comes back as one row with the title, employer, city, contract, hours, salary range, posting date, the complete description, and the skills, languages and years of experience written in it. Every run also saves a summary of how many offers match on InfoJobs and how they split by province, category and contract. Run it once, on a schedule, or from your own tools through the Apify API.

### 💡 Why use InfoJobs Spain Scraper?

- **I am a recruiter or staffing agency** checking which employers are hiring for a role in my province this week, and at what pay.
- **I run a job aggregator or newsletter** and need a clean daily feed of new Spanish offers without duplicates.
- **I am a labour-market analyst** measuring demand and advertised salaries by category, city or contract type over time.
- **I am a career coach or job seeker** who wants fully remote or hybrid offers above a salary floor, delivered as soon as they appear.

### 🚀 How to use InfoJobs Spain Scraper

<table width="100%">
<tr>
<td style="padding:16px 14px;width:33%;background:#EEF6FB;border:1px solid #C5DFEF;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#2088C2;letter-spacing:1px">STEP 1</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Describe the offers you want</span><br>
<span style="font-size:12px;color:#57534E">Type a keyword, pick provinces, categories and filters, or paste an InfoJobs search link.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#EEF6FB;border:1px solid #C5DFEF;border-left:none;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#2088C2;letter-spacing:1px">STEP 2</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Set how many</span><br>
<span style="font-size:12px;color:#57534E">Choose the maximum number of offers. Add a monitor name if you want only new ones next time.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#EEF6FB;border:1px solid #C5DFEF;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#2088C2;letter-spacing:1px">STEP 3</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Run and export</span><br>
<span style="font-size:12px;color:#57534E">Click Save & Start, then download JSON, CSV or Excel, or schedule the run.</span>
</td>
</tr>
</table>

### 📥 Input

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `startUrls` | array of URLs | No | InfoJobs search links. When filled, they replace the filters below. Province and category pages work too. |
| `keyword` | string | No | Job title, skill or company, for example `camarero` or `python`. Empty lists the newest offers in Spain. |
| `provinces` | array of enum | No | Spanish provinces to include. Leave empty for all of Spain. |
| `cities` | array of strings | No | Cities as written on InfoJobs, for example `Madrid` or `Sabadell`. |
| `categories` | array of enum | No | InfoJobs job categories, for example Informática y telecomunicaciones. |
| `remoteWork` | array of enum | No | On-site, hybrid or fully remote. |
| `contractTypes` | array of enum | No | Permanent, fixed-term, freelance, part-time, training and other contract types. |
| `workdays` | array of enum | No | Full-time, part-time or intensive schedules by shift. |
| `education` | array of enum | No | Education level asked for, from no studies to doctorate. |
| `salaryMin` | integer | No | Minimum advertised gross salary in euros. 0 means no salary filter. |
| `salaryPeriod` | enum | No | Whether the minimum salary is per year or per month. |
| `postedWithin` | enum | No | Any time, last 24 hours, last 7 days or last 15 days. |
| `sortBy` | enum | No | Newest first (default) or most relevant. |
| `monitorName` | string | No | Name of a saved search. Later runs with the same name return only offers not delivered before. |
| `resetMonitor` | boolean | No | Forget everything remembered under the monitor name and start fresh. |
| `maxItems` | integer | No | Maximum offers to return. Defaults to 20. |
| `includeDescription` | boolean | No | Adds the full description and the skills, languages and experience found in it. Defaults to true. |
| `proxyConfiguration` | object | No | Connection settings. Spanish connections are pre-selected. |

### 📤 Output

A structured dataset of InfoJobs offers. Download it as JSON, CSV, HTML or Excel. Fields InfoJobs does not show for an offer are left out instead of being filled with placeholders.

```json
{
  "id": "efe545a99b44c8be5a31d0428faeaa",
  "url": "https://www.infojobs.net/vitoria-gasteiz/encargado-obra-edificacion/of-iefe545a99b44c8be5a31d0428faeaa",
  "title": "Encargado/a de obra de edificación",
  "companyName": "VASCO GALLEGA DE CONSTRUCCIONES SA",
  "companyUrl": "https://www.infojobs.net/vasco-gallega-de-construcciones-sa/em-i97484948495749866583676026173641608042",
  "city": "Vitoria-Gasteiz",
  "remoteWork": "On-site",
  "isRemote": false,
  "contractType": "Indefinido",
  "workday": "Completa",
  "salaryMin": 45000,
  "salaryMax": 50000,
  "salaryPeriod": "year",
  "salaryCurrency": "EUR",
  "salaryType": "gross",
  "salaryText": "45,000-50,000 EUR gross per year",
  "postedAt": "2026-10-23T16:36:42Z",
  "isNew": true,
  "isPromoted": true,
  "isExecutive": true,
  "description": "Empresa promotora-constructora de referencia y amplia trayectoria situada en Vitoria-Gasteiz...",
  "skills": ["PRL", "Carnet de conducir"],
  "experienceYearsMentioned": 5,
  "scrapedAt": "2026-10-23T18:20:11.984Z"
}
```

Each run also saves a **search summary** with the number of matching offers on InfoJobs, the pages read, the offers returned, and counts by province, category, contract type, work model, hours and education. Open it from the Output tab.

### 📊 Data table

| Field | Type | Description |
| --- | --- | --- |
| `id` | string | InfoJobs offer ID. |
| `url` | string | Direct link to the offer. |
| `title` | string | Job title. |
| `companyName` | string | Hiring company. |
| `companyUrl` | string | Link to the company page on InfoJobs. |
| `companyLogoUrl` | string | Company logo image. |
| `city` | string | City of the offer as shown by InfoJobs. |
| `remoteWork` | string | On-site, Hybrid or Fully remote. |
| `isRemote` | boolean | True when the offer is fully remote. |
| `contractType` | string | Contract type, for example Indefinido. |
| `workday` | string | Working hours, for example Completa. |
| `salaryMin` | number | Lowest advertised salary. Left out when no salary is shown. |
| `salaryMax` | number | Highest advertised salary, when a range is shown. |
| `salaryPeriod` | string | `year` or `month`. |
| `salaryCurrency` | string | Currency code, normally EUR. |
| `salaryType` | string | `gross` or `net`. |
| `salaryText` | string | The salary as one readable line. |
| `postedAt` | string | ISO 8601 publication time. |
| `isNew` | boolean | True when InfoJobs marks the offer as new. |
| `isPromoted` | boolean | True for promoted offers. |
| `isExecutive` | boolean | True for executive-level offers. |
| `description` | string | Complete offer text. |
| `skills` | array | Skills and tools mentioned in the offer text. |
| `languages` | array | Languages mentioned in the offer text. |
| `experienceYearsMentioned` | integer | Years of experience stated in the text, when it states one. |
| `scrapedAt` | string | ISO 8601 time the row was collected. |

### 💰 Pricing

This Actor uses pay per event pricing. You are charged one event for each job offer saved to the dataset, and the price per event drops on higher Apify plans. Offers a monitor has already delivered and runs that find nothing are not charged. There is no subscription and no minimum spend, and a spending limit you set on the run is always respected.

Free plan runs are limited to 25 offers per run, 3 runs per day, and a 30 minute wait between runs.

### ⭐ Enjoying InfoJobs Spain Scraper?

<table width="100%" style="display:table;width:100%">
<tr>
<td style="padding:20px 24px 14px;background:#EEF6FB;border:1px solid #C5DFEF;border-left:5px solid #2088C2;border-radius:10px 10px 0 0">
<span style="font-size:20px;letter-spacing:4px">⭐ ⭐ ⭐ ⭐ ⭐</span><br>
<span style="font-size:17px;font-weight:800;color:#1C1917">Got a clean list of Spanish job offers with salaries instead of paging through InfoJobs by hand?</span><br>
<span style="font-size:14px;color:#57534E">A 5-star rating takes 10 seconds and helps other recruiters and labour-market analysts find it. Your feedback also tells us what to build next.</span>
</td>
</tr>
<tr>
<td style="padding:0;background:#2088C2;border:1px solid #C5DFEF;border-top:none;border-radius:0 0 10px 10px;text-align:center">
<a href="https://apify.com/getascraper/infojobs-spain-scraper/reviews" style="display:block;padding:13px 16px;color:#FFFFFF;text-decoration:none;font-weight:800;font-size:15px;letter-spacing:0.3px">★&nbsp;&nbsp;Rate this Actor on Apify</a>
</td>
</tr>
</table>

### ✨ Tips

- **Start with the newest first order.** It is the default, and it is what makes the monitor stop early once it reaches offers you already have.
- **Schedule a monitor.** Give the run a monitor name and schedule it daily; each run returns only offers it has not returned before. Use one name per saved search.
- **Combine filters to size a market.** Province, category and posting date together give you a quick count in the search summary before you export anything.
- **Use the salary floor with care.** Offers that hide their salary are excluded when a minimum salary is set.
- **Start small.** Test with 10 to 25 offers before scaling up to thousands.
- **Retries in the log are normal.** InfoJobs sometimes shows a check to a connection. The run simply continues from another Spanish address.

### ❓ FAQ, disclaimers, and support

##### How many offers can I get in one run?

Each page of InfoJobs results holds about 20 offers, and the Actor keeps turning pages until your limit is reached, up to 5,000 offers per run. The search summary tells you how many offers match in total.

##### ¿Cómo extraer ofertas de empleo de InfoJobs por provincia y sueldo?

Choose one or more provinces, set a minimum salary and its period, and run. You can also paste the InfoJobs search link of a search you already built, and the Actor collects it page by page.

##### Does it include salaries, remote work and contract details?

Yes. Salary is returned as numbers when the employer advertises it, and left out when it does not. Every row also carries the work model, contract type and working hours.

##### Does it get blocked?

It uses Spanish connections by default and retries from a fresh address when InfoJobs asks for a check. It does not log in and does not need an account.

##### Does it return recruiter phone numbers or emails?

No. It collects the public offer data shown on InfoJobs search results: employer, offer text, pay, place and dates. It does not collect contact details or candidate data.

##### Is scraping InfoJobs legal?

This Actor reads publicly accessible job offers with no login required. You are responsible for ensuring your use of the data complies with applicable laws and the InfoJobs Terms of Service.

**Disclaimer:** This Actor accesses public job offers only and does not log in. InfoJobs is a trademark of its respective owner. This Actor is not affiliated with or endorsed by InfoJobs.

### 🔗 Other actors

- [NoFluffJobs Scraper: Tech Salaries, Skills and New Job Monitor](https://apify.com/getascraper/nofluffjobs-scraper) ↗ - collects tech jobs with salary ranges and skills, plus a new-job monitor.
- [Ofertas de Emprego Jobs Scraper: Empregos em Portugal e Filtros](https://apify.com/getascraper/ofertas-de-emprego-jobs-scraper) ↗ - extracts job offers from Portugal with filters.
- [Net-Empregos Portugal Jobs Scraper: Vagas de Emprego, No Login](https://apify.com/getascraper/net-empregos-jobs-scraper) ↗ - collects Portuguese vacancies without any login.
- [Eurofirms Portugal Jobs Scraper: Ofertas de Emprego Change Feed](https://apify.com/getascraper/eurofirms-portugal-jobs-scraper) ↗ - tracks new and changed offers from a Portuguese staffing agency.
- [MyCareersFuture Singapore Scraper: Jobs, Salaries, Skills & UEN](https://apify.com/getascraper/mycareersfuture-jobs-scraper) ↗ - pulls Singapore jobs with salaries and employer data.

# Changelog

This Actor's version history is a separate document: https://apify.com/getascraper/infojobs-spain-scraper/changelog.md

# Actor input Schema

## `startUrls` (type: `array`):

Optional. Paste InfoJobs search result links (for example a filtered search you built on infojobs.net, or a province or category page). When links are given, the filters below are ignored and each link is collected in turn. Leave empty to search with the filters below.

## `keyword` (type: `string`):

Job title, skill or company to search for, for example camarero, python or enfermera. Leave empty to list the newest offers in Spain.

## `provinces` (type: `array`):

Only offers in these Spanish provinces. Pick several to combine them. Leave empty for all of Spain.

## `cities` (type: `array`):

Only offers in these cities, typed as they appear on InfoJobs, for example Madrid or Sabadell. Combine with provinces to narrow further.

## `categories` (type: `array`):

Only offers in these InfoJobs categories, for example Informática y telecomunicaciones. Leave empty for every category.

## `remoteWork` (type: `array`):

Filter by on-site, hybrid or fully remote. Pick Fully remote to get remote-only jobs in Spain, a filter that most InfoJobs scrapers do not expose.

## `contractTypes` (type: `array`):

Only offers with these contract types, for example Permanent or Freelance. Leave empty for all contract types.

## `workdays` (type: `array`):

Only offers with this schedule, such as full-time or part-time mornings. Leave empty for all schedules.

## `education` (type: `array`):

Only offers asking for this education level, for example Bachelor degree or Master.

## `salaryMin` (type: `integer`):

Only offers whose advertised gross salary is at or above this amount in euros. Offers that hide their salary are excluded when this is set. 0 means no salary filter.

## `salaryPeriod` (type: `string`):

Whether the minimum salary above is a yearly or a monthly amount.

## `postedWithin` (type: `string`):

Only offers published in this time window. Combine with the new-postings monitor for a daily feed.

## `sortBy` (type: `string`):

Newest first returns the most recently published offers first. Most relevant only differs when a keyword is set.

## `monitorName` (type: `string`):

Give this search a name (letters, numbers and dashes) to turn on new-postings mode. The first run returns the matches and remembers them; every later run with the same name returns only offers not delivered before. Use one name per saved search or schedule. Leave empty for a normal one-off run.

## `resetMonitor` (type: `boolean`):

Forget every offer remembered under the monitor name above and start fresh, so the next results are treated as a first run.

## `maxItems` (type: `integer`):

Stop after this many offers across all searches. Each page of InfoJobs results holds about 20 offers.

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

Add the complete offer text, plus the skills, languages and years of experience detected in it. Turn off for lighter rows.

## `proxyConfiguration` (type: `object`):

Spanish residential proxies are pre-selected because InfoJobs blocks most datacenter addresses. Change only if you know what you are doing.

## Actor input object example

```json
{
  "startUrls": [],
  "keyword": "",
  "provinces": [],
  "cities": [],
  "categories": [],
  "remoteWork": [],
  "contractTypes": [],
  "workdays": [],
  "education": [],
  "salaryMin": 0,
  "salaryPeriod": "YEAR",
  "postedWithin": "ANY",
  "sortBy": "PUBLICATION_DATE",
  "monitorName": "",
  "resetMonitor": false,
  "maxItems": 20,
  "includeDescription": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "ES"
  }
}
```

# Actor output Schema

## `results` (type: `string`):

No description

## `summary` (type: `string`):

No 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 = {
    "startUrls": [],
    "keyword": "",
    "provinces": [],
    "cities": [],
    "categories": [],
    "remoteWork": [],
    "contractTypes": [],
    "workdays": [],
    "education": [],
    "salaryMin": 0,
    "salaryPeriod": "YEAR",
    "postedWithin": "ANY",
    "sortBy": "PUBLICATION_DATE",
    "monitorName": "",
    "resetMonitor": false,
    "maxItems": 20,
    "includeDescription": true,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "ES"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("getascraper/infojobs-spain-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 = {
    "startUrls": [],
    "keyword": "",
    "provinces": [],
    "cities": [],
    "categories": [],
    "remoteWork": [],
    "contractTypes": [],
    "workdays": [],
    "education": [],
    "salaryMin": 0,
    "salaryPeriod": "YEAR",
    "postedWithin": "ANY",
    "sortBy": "PUBLICATION_DATE",
    "monitorName": "",
    "resetMonitor": False,
    "maxItems": 20,
    "includeDescription": True,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "ES",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("getascraper/infojobs-spain-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 '{
  "startUrls": [],
  "keyword": "",
  "provinces": [],
  "cities": [],
  "categories": [],
  "remoteWork": [],
  "contractTypes": [],
  "workdays": [],
  "education": [],
  "salaryMin": 0,
  "salaryPeriod": "YEAR",
  "postedWithin": "ANY",
  "sortBy": "PUBLICATION_DATE",
  "monitorName": "",
  "resetMonitor": false,
  "maxItems": 20,
  "includeDescription": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "ES"
  }
}' |
apify call getascraper/infojobs-spain-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,getascraper/infojobs-spain-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/hvo75ddtCD2fMs4VZ/builds/QjNTmXnns4BEuNuSe/openapi.json
