# Teaching Vacancies UK Scraper: DfE School Jobs and Change Feed (`getascraper/teaching-vacancies-uk-scraper`) Actor

Scrape public England school vacancies from the DfE Teaching Vacancies service. Export typed salaries, closing dates, roles, schools, application links, and safe new/changed/removed records for Google Sheets, Make, Zapier, or scheduled hiring feeds. No login. $0.0025 per vacancy.

- **URL**: https://apify.com/getascraper/teaching-vacancies-uk-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 $1.88 / 1,000 job postings

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

## 🔍 Teaching Vacancies UK Scraper: DfE School Jobs and Change Feed

<table width="100%">
<tr>
<td style="padding:24px 28px;background:#f0fdf4;border:1px solid #86efac;border-top:4px solid #14532d;border-radius:12px">
<span style="font-size:23px;font-weight:800;color:#14532d;line-height:1.3">Turn public school vacancies into a hiring feed you can act on</span><br>
<span style="font-size:15px;color:#334155;line-height:1.6">Keep salary, school context, closing dates, and application routes together, then return only meaningful changes on scheduled runs.</span>
</td>
</tr>
</table>

<table width="100%">
<tr>
<td width="25%" style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #86efac;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#14532d">🏫 Official source</span><br>
<span style="font-size:12px;color:#334155">Public DfE vacancy pages, nothing scraped from private accounts.</span>
</td>
<td width="25%" style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #86efac;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#14532d">💷 Typed pay</span><br>
<span style="font-size:12px;color:#334155">Salary values and periods parsed into usable numbers.</span>
</td>
<td width="25%" style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #86efac;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#14532d">🧭 Useful filters</span><br>
<span style="font-size:12px;color:#334155">Roles, phases, subjects, and dates narrowed before you export.</span>
</td>
<td width="25%" style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #86efac;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#14532d">🔄 Change feed</span><br>
<span style="font-size:12px;color:#334155">New, changed, unchanged, and removed on every scheduled run.</span>
</td>
</tr>
</table>

Find current England school vacancies, published pay, closing dates, and genuine application links from the official **Teaching Vacancies** service. Export to Google Sheets, Make, or Zapier, or schedule the same search to watch for new, changed, and removed roles.

### 🎯 What does this Actor do?

Teaching Vacancies UK Scraper collects public listings from the UK Department for Education service. It is built for recruitment teams, multi-academy trusts, education researchers, and job-feed operators.

The default run is deliberately small. It returns up to 20 listing-page records from two pages and does not fetch detail pages unless you enable enrichment. That keeps the first run quick and inexpensive.

When detail enrichment is enabled, the Actor can add full descriptions, structured salary values, posting and closing dates, application links, school websites, organisation pages, pupil counts, age ranges, and Ofsted links when the source publishes them.

### 💡 Who is this for?

- **I am a recruitment lead at a multi-academy trust.** I need every open vacancy across my schools in one export so that I can spot gaps without checking each school's page by hand.
- **I am a supply-teaching agency.** I need to know the moment a new vacancy posts in my region so that I can reach the school before other agencies do.
- **I am an education researcher.** I need typed salary and location data across many postings so that I can compare pay by phase and region.
- **I am building a school-jobs feed or newsletter.** I need a reliable new-and-changed signal so that I only send subscribers vacancies they have not seen yet.

### 🚀 How to use it

<table width="100%">
<tr>
<td width="33%" style="padding:16px 14px;width:33%;background:#f0fdf4;border:1px solid #86efac;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#14532d;letter-spacing:1px">STEP 1</span><br>
<span style="font-size:14px;font-weight:700;color:#14532d">Choose a source</span><br>
<span style="font-size:12px;color:#334155">Paste a public search URL or enter keywords and UK locations.</span>
</td>
<td width="33%" style="padding:16px 14px;width:33%;background:#f0fdf4;border:1px solid #86efac;border-left:none;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#14532d;letter-spacing:1px">STEP 2</span><br>
<span style="font-size:14px;font-weight:700;color:#14532d">Set the shortlist</span><br>
<span style="font-size:12px;color:#334155">Filter by role, phase, subject, school type, pay dates, or application readiness.</span>
</td>
<td width="33%" style="padding:16px 14px;width:33%;background:#f0fdf4;border:1px solid #86efac;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#14532d;letter-spacing:1px">STEP 3</span><br>
<span style="font-size:14px;font-weight:700;color:#14532d">Run or schedule</span><br>
<span style="font-size:12px;color:#334155">Export current roles, or use a named state for a focused change feed.</span>
</td>
</tr>
</table>

1. Add a public Teaching Vacancies search URL, or enter keywords and locations.
2. Select source-supported filters and choose whether to fetch vacancy details.
3. Run once for a current dataset, or reuse a state name for scheduled monitoring.

The Actor rejects private service paths, external hosts, and radius searches that the source does not permit. Missing source values are omitted rather than replaced with guesses.

### 🧾 Input

| Field | Type | Required | Description |
| --- | --- | :---: | --- |
| `startUrls` | array of URLs | No | Public Teaching Vacancies search or vacancy URLs. |
| `searchQueries` | array of strings | No | Keywords such as `primary teacher`, `maths`, or `SENCO`. |
| `locations` | array of strings | No | UK towns, cities, counties, or postcodes. |
| `jobRoles` | array of enums | No | Teaching and support role filters. |
| `phases` | array of enums | No | Nursery, primary, secondary, sixth form, or through. |
| `subjects` | array of strings | No | Public subject names accepted by the source. |
| `organisationTypes` | array of enums | No | Academy, local authority maintained school, or FE college. |
| `schoolTypes` | array of enums | No | Faith-school or special-school filters. |
| `workingPatterns` | array of enums | No | Full time, part time, or job share. |
| `ectStatus` | enum | No | Any, ECT suitable, or QTS not needed. |
| `visaSponsorshipOnly` | boolean | No | Keep only source-marked sponsorship vacancies. |
| `quickApplyOnly` | boolean | No | Require a public application or advert link. |
| `sortBy` | enum | No | Closing soon or newest first. |
| `postedWithinDays` | integer | No | Local date filter for recently published vacancies. |
| `closingWithinDays` | integer | No | Local date filter for upcoming closing dates. |
| `includeDetails` | boolean | No | Fetch public vacancy pages for richer fields. |
| `detailRefreshMode` | enum | No | Refresh new or summary-changed records, or every selected record. |
| `includeOrganisationSnapshot` | boolean | No | Add visible related vacancies from public organisation pages. |
| `maxDetailRequests` | integer | No | Bound optional detail work for predictable runs. |
| `outputMode` | enum | No | Current snapshot, snapshot with changes, or changes only. |
| `stateName` | string | No | Independent name for a recurring monitoring scope. |
| `maxItems` | integer | No | Maximum output rows, from 1 to 500. |
| `maxPages` | integer | No | Maximum listing pages per source URL, from 1 to 25. |
| `proxyConfiguration` | object | No | Optional Apify Proxy configuration. Direct access is the default. |

### 📦 Default input

```json
{
  "startUrls": [
    { "url": "https://teaching-vacancies.service.gov.uk/jobs" }
  ],
  "maxItems": 20,
  "maxPages": 2,
  "includeDetails": false,
  "outputMode": "snapshotAndChanges",
  "stateName": "default",
  "proxyConfiguration": { "useApifyProxy": false }
}
```

### 📊 Data table

| Field | Type | Description |
| --- | --- | --- |
| `recordType` | string | Always `job`. |
| `jobId` | string | Stable source identifier or canonical vacancy slug. |
| `title` | string | Published vacancy title. |
| `employerName` | string | School or organisation name when published. |
| `sourceUrl` | URL | Canonical public vacancy page. |
| `description` | string | Source description when detail enrichment is enabled. |
| `salaryText` | string | Original published salary text. |
| `salaryMin`, `salaryMax` | number | Parsed salary values in pounds when safely available. |
| `salaryCurrency` | string | Usually `GBP` when a numeric salary is present. |
| `salaryPeriod` | string | Year, month, week, day, or hour. |
| `salaryBasis` | string | Actual, pro rata, full-time equivalent, scale, or unspecified. |
| `datePosted`, `closingDate`, `validThrough` | date-time | Source-backed vacancy dates. |
| `jobRole`, `subject`, `phase`, `keyStage` | string | Source role and education classifications. |
| `schoolType`, `organisationType` | string | Source school and organisation values. |
| `workingPattern`, `contractType` | string | Published work and contract details. |
| `visaSponsorship`, `ectSuitable`, `qtsNotNeeded` | string or boolean | Source-backed eligibility fields. |
| `location`, `streetAddress`, `city`, `region`, `postalCode`, `country` | string | Public school location fields. |
| `pupilCount`, `daysUntilClosing` | number | Numeric values derived only from valid source data. |
| `organisationUrl`, `schoolWebsite`, `ofstedUrl`, `applyUrl` | URL | Public links exposed by the vacancy page. |
| `organisationActiveJobs` | array | Visible related vacancies when organisation enrichment is enabled. |
| `hasSalary`, `hasApplyUrl`, `hasDescription`, `isActive` | boolean | Factual availability and monitoring flags. |
| `changeType` | string | `new`, `changed`, `unchanged`, or `removed`. |
| `changedFields` | array | Fields that changed since the prior saved state. |
| `previousSalaryMin`, `previousSalaryMax`, `previousClosingDate` | number or date-time | Previous values when a factual change is detected. |
| `searchUrl`, `sourcePage`, `scrapedAt` | URL, number, date-time | Search traceability and retrieval metadata. |

### 🔄 Monitoring behavior

Use the same `stateName` for recurring runs.

- The first complete run marks current vacancies as `new`.
- An identical run marks them as `unchanged`.
- Salary, title, employer, location, eligibility, or closing-date changes become `changed`.
- A vacancy becomes `removed` only after a complete, uncapped source run.
- Partial, capped, failed, or detail-incomplete runs never infer removals.
- `detailRefreshMode: "newOrChanged"` reuses saved detail data for unchanged vacancies.

### 💰 Pricing

This Actor uses pay-per-event pricing: you pay per vacancy returned, plus a small fixed run-start charge. Empty runs do not create result-item charges, and there is no subscription requirement. Detail and organisation enrichment are included in the same result price and remain opt-in, so you control request volume.

### ⭐ Enjoying Teaching Vacancies UK Scraper?

<table width="100%" style="display:table;width:100%">
<tr>
<td style="padding:20px 24px 14px;background:#f0fdf4;border:1px solid #86efac;border-left:5px solid #14532d;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:#14532d">One scheduled run just caught a vacancy change before you'd have noticed it.</span><br>
<span style="font-size:14px;color:#334155">A 5-star rating takes 10 seconds and helps other recruitment teams find this Actor. Your feedback also tells us what to build next.</span>
</td>
</tr>
<tr>
<td style="padding:0;background:#14532d;border:1px solid #86efac;border-top:none;border-radius:0 0 10px 10px;text-align:center">
<a href="https://apify.com/getascraper/teaching-vacancies-uk-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

- Keep the default run listing-only while you check the fields, then turn on `includeDetails` once you need descriptions or application links.
- Give each recurring search its own `stateName` so separate monitors do not share a baseline.
- Use `detailRefreshMode: "newOrChanged"` on scheduled runs to skip re-fetching vacancies that have not changed.
- Set `sortBy: "expiringSoon"` or `closingWithinDays` when you only care about vacancies closing soon.
- Run an uncapped search occasionally so the Actor can safely detect `removed` vacancies.

### ❓ FAQ

#### Does it collect private candidate or reviewer information?

No. It collects public vacancy and school information only. Private accounts, candidate records, reviewer identities, and unpublished contact data are outside the scope.

#### Can I fetch full vacancy descriptions and application links?

Yes. Enable `includeDetails`. The Actor reads public vacancy pages and omits fields that the source does not publish.

#### Why are some detail requests skipped on later runs?

`newOrChanged` reuses saved details for unchanged vacancies. Select `all` when you need every selected detail page refreshed.

#### Can I monitor vacancies closing soon?

Yes. Use `sortBy: "expiringSoon"` or set `closingWithinDays` for a local closing-date filter.

### 🔗 Other actors

- [Job Bank Canada Scraper & LMIA Job Monitor](https://apify.com/getascraper/jobbank-scraper) ↗ - Monitor Canadian government job postings and LMIA listings.
- [HigherEdJobs Scraper: Academic Job Monitor](https://apify.com/getascraper/higheredjobs-com-scraper) ↗ - Track academic vacancies with salary and change signals.
- [EdJoin Jobs Scraper: Educator & School District Listings](https://apify.com/getascraper/edjoin-scraper) ↗ - Collect public K-12 school district vacancies and deadlines.
- [NHS Jobs Scraper: UK Trust Vacancy Alerts](https://apify.com/getascraper/nhs-trust-vacancy-monitor) ↗ - Monitor another UK public-sector vacancy source.

# Changelog

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

# Actor input Schema

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

Use public Teaching Vacancies search pages or individual vacancy URLs. Radius URLs and private service paths are rejected. The default run uses the public jobs page.

## `searchQueries` (type: `array`):

Optional source search terms such as primary teacher, maths, SENCO, or teaching assistant. Each term is combined with the selected locations.

## `locations` (type: `array`):

Optional city, county, town, or postcode values. Radius search is intentionally not added because the source disallows radius URLs in robots.txt.

## `jobRoles` (type: `array`):

Choose one or more teaching, leadership, or support roles. The readable labels below are mapped to the source's internal filter values.

## `phases` (type: `array`):

Choose the education phase for the vacancy.

## `subjects` (type: `array`):

Enter public subject names accepted by the Teaching Vacancies search form.

## `organisationTypes` (type: `array`):

Restrict results to source-published organisation types.

## `schoolTypes` (type: `array`):

Choose optional faith-school or special-school filters.

## `workingPatterns` (type: `array`):

Keep full-time, part-time, or job-share vacancies.

## `ectStatus` (type: `string`):

Use the source ECT or QTS suitability filter.

## `visaSponsorshipOnly` (type: `boolean`):

Keep only vacancies whose source indicates that visa sponsorship can be provided.

## `quickApplyOnly` (type: `boolean`):

Keep only vacancies with a public application or advert link. This automatically enables detail retrieval.

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

Choose expiring-soon results or newly published results first.

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

Optional local date filter. Leave empty to include all published dates.

## `closingWithinDays` (type: `integer`):

Optional local date filter for vacancies closing between today and the selected number of days.

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

Direct HTTP is the default because the public source is currently accessible without a proxy. If you enable Apify Proxy, datacenter routing is the economical first option.

## `includeDetails` (type: `boolean`):

Fetch public vacancy pages for full descriptions, typed salary values, application links, school metadata, and dates. New or summary-changed vacancies are fetched by default on later runs.

## `detailRefreshMode` (type: `string`):

New or changed reuses saved detail data for unchanged vacancies. All refreshes every selected vacancy.

## `includeOrganisationSnapshot` (type: `boolean`):

Fetch each distinct public Teaching Vacancies organisation page once to count and list currently visible related vacancies.

## `maxDetailRequests` (type: `integer`):

Bound optional vacancy and organisation detail requests for predictable runtime and cost.

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

Maximum number of unique vacancies returned after filtering and deduplication.

## `maxPages` (type: `integer`):

Maximum number of source search pages per URL. The Actor follows only pagination links discovered on the source.

## `outputMode` (type: `string`):

Snapshot emits current rows. Snapshot and changes also emits safe removals. Changes only omits unchanged rows.

## `stateName` (type: `string`):

Stable label for this recurring search. Different state names create independent watchlists.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://teaching-vacancies.service.gov.uk/jobs"
    }
  ],
  "searchQueries": [],
  "locations": [],
  "jobRoles": [],
  "phases": [],
  "subjects": [],
  "organisationTypes": [],
  "schoolTypes": [],
  "workingPatterns": [],
  "ectStatus": "any",
  "visaSponsorshipOnly": false,
  "quickApplyOnly": false,
  "sortBy": "expiringSoon",
  "proxyConfiguration": {
    "useApifyProxy": false
  },
  "includeDetails": false,
  "detailRefreshMode": "newOrChanged",
  "includeOrganisationSnapshot": false,
  "maxDetailRequests": 20,
  "maxItems": 20,
  "maxPages": 2,
  "outputMode": "snapshotAndChanges",
  "stateName": "default"
}
```

# Actor output Schema

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

Current public vacancy records and factual monitoring changes.

## `runSummary` (type: `string`):

Request, pagination, filter, warning, and change diagnostics.

# 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": [
        {
            "url": "https://teaching-vacancies.service.gov.uk/jobs"
        }
    ],
    "searchQueries": [],
    "locations": [],
    "jobRoles": [],
    "phases": [],
    "subjects": [],
    "organisationTypes": [],
    "schoolTypes": [],
    "workingPatterns": [],
    "ectStatus": "any",
    "visaSponsorshipOnly": false,
    "quickApplyOnly": false,
    "sortBy": "expiringSoon",
    "proxyConfiguration": {
        "useApifyProxy": false
    },
    "includeDetails": false,
    "detailRefreshMode": "newOrChanged",
    "includeOrganisationSnapshot": false,
    "maxDetailRequests": 20,
    "maxItems": 20,
    "maxPages": 2,
    "outputMode": "snapshotAndChanges",
    "stateName": "default"
};

// Run the Actor and wait for it to finish
const run = await client.actor("getascraper/teaching-vacancies-uk-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": [{ "url": "https://teaching-vacancies.service.gov.uk/jobs" }],
    "searchQueries": [],
    "locations": [],
    "jobRoles": [],
    "phases": [],
    "subjects": [],
    "organisationTypes": [],
    "schoolTypes": [],
    "workingPatterns": [],
    "ectStatus": "any",
    "visaSponsorshipOnly": False,
    "quickApplyOnly": False,
    "sortBy": "expiringSoon",
    "proxyConfiguration": { "useApifyProxy": False },
    "includeDetails": False,
    "detailRefreshMode": "newOrChanged",
    "includeOrganisationSnapshot": False,
    "maxDetailRequests": 20,
    "maxItems": 20,
    "maxPages": 2,
    "outputMode": "snapshotAndChanges",
    "stateName": "default",
}

# Run the Actor and wait for it to finish
run = client.actor("getascraper/teaching-vacancies-uk-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": [
    {
      "url": "https://teaching-vacancies.service.gov.uk/jobs"
    }
  ],
  "searchQueries": [],
  "locations": [],
  "jobRoles": [],
  "phases": [],
  "subjects": [],
  "organisationTypes": [],
  "schoolTypes": [],
  "workingPatterns": [],
  "ectStatus": "any",
  "visaSponsorshipOnly": false,
  "quickApplyOnly": false,
  "sortBy": "expiringSoon",
  "proxyConfiguration": {
    "useApifyProxy": false
  },
  "includeDetails": false,
  "detailRefreshMode": "newOrChanged",
  "includeOrganisationSnapshot": false,
  "maxDetailRequests": 20,
  "maxItems": 20,
  "maxPages": 2,
  "outputMode": "snapshotAndChanges",
  "stateName": "default"
}' |
apify call getascraper/teaching-vacancies-uk-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,getascraper/teaching-vacancies-uk-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/0r1MHlWvcMdBkC9Pg/builds/BvlHHkmhK9NI4FSr4/openapi.json
