# Rozee.pk Jobs Scraper (`axiomworks/rozee-jobs-scraper`) Actor

Scrape Rozee.pk job listings and get structured records with titles, companies, locations, job types, salary and experience ranges, skills, descriptions and application deadlines. Search by keyword and filter by city, industry, experience or job type; public search pages require no login.

- **URL**: https://apify.com/axiomworks/rozee-jobs-scraper.md
- **Developed by:** [Axiom Works](https://apify.com/axiomworks) (community)
- **Categories:** Jobs
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.60 / 1,000 results

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

**Returns:** one row per Rozee.pk job with `title`, `company`, `city`, `salaryMin`, `salaryMax`, `experienceMin`, `skills`, `applyBy` and `url`.
**Input:** `{"keyword": "sales", "city": "Lahore", "maxItems": 50}`
**Best for:** recruiter and staffing lead lists in Pakistan, salary and hiring-demand research, job alert feeds.

```json
{
    "jobId": "1911532",
    "title": "Sales Verification Specialist- Call Center",
    "company": "Prime BPO 5",
    "city": "Rawalpindi",
    "salaryMin": 100000,
    "salaryCurrency": "PKR",
    "experienceMin": "1 Year",
    "applyBy": "2026-11-17T00:00:00Z"
}
```

### What does Rozee.pk Jobs Scraper do?

Rozee.pk Jobs Scraper collects job listings from Rozee.pk, the largest job board in Pakistan. You give it a keyword (a job title, skill or company), optional filters for city, industry, experience and job type, or one or more Rozee search URLs, and it returns one structured row per job: title, hiring company, city, country, job type, industry, salary range, experience range, skills, posting date, apply-by deadline, the full job description (as HTML and as plain text) and the link to the job on Rozee.pk.

It works like an unofficial Rozee.pk API. It reads the same public search pages a visitor sees, without a login, and turns them into clean JSON, CSV or Excel you can load into a spreadsheet, a CRM or an applicant tracking system. Every row also says which search page it came from and which keyword was searched, so results from several runs can be merged and compared.

Typical users are recruiters and staffing agencies building lists of companies that are hiring in Pakistan, HR teams and researchers tracking salaries and demand for skills, and developers who need a job feed for a job alert service, a niche job board or an AI agent.

### What data can you get from Rozee.pk?

| Field | Description | Example |
|---|---|---|
| `jobId` | Rozee job id | `1911532` |
| `title` | Job title as posted | `Sales Verification Specialist- Call Center` |
| `company` | Hiring company name | `Prime BPO 5` |
| `city` | Main city of the job | `Rawalpindi` |
| `cities` | All cities the job is posted for | `["Rawalpindi"]` |
| `country` | Country of the job | `Pakistan` |
| `jobType` | Job type or shift label, as Rozee shows it | `Full Time/Permanent` |
| `industryId` | Rozee industry id | `63` |
| `industry` | Industry name for that id | `BPO` |
| `salaryMin` | Lowest monthly salary, when published | `100000` |
| `salaryMax` | Highest monthly salary, when published | `100000` |
| `salaryCurrency` | Salary currency, set only when a salary is published | `PKR` |
| `experienceMin` | Minimum experience asked for | `1 Year` |
| `experienceMax` | Maximum experience, when given | `5 Years` |
| `postedDate` | Posting date as Rozee displays it | `Oct 17, 2026` |
| `postedAt` | Posting time, ISO 8601 | `2026-10-17T01:16:59Z` |
| `applyBy` | Application deadline, ISO 8601 | `2026-11-17T00:00:00Z` |
| `skills` | Skills listed on the job | `["Customer Service", "Night Shift"]` |
| `descriptionHtml` | Full job description with its HTML formatting | `Prime BPO 5 is seeking...` |
| `description` | Full job description as plain text | `Prime BPO 5 is seeking...` |
| `source` | Where Rozee got the job (BeBee, Indeed, ROZEEGPT.AI and others) | `ROZEEGPT.AI` |
| `isExternal` | True when Rozee aggregated the job from another board | `true` |
| `url` | Link to the job on Rozee.pk | `https://www.rozee.pk/prime-bpo-5-sales-verification-specialist-call-center-jobs-1911532` |
| `searchQuery` | Keyword searched; null for searches without a keyword | `sales` |
| `scrapedAt` | When the row was collected, ISO 8601 | `2026-10-19T00:20:06.125Z` |
| `id` | Stable record id (same as `jobId`) | `1911532` |
| `sourceUrl` | Rozee search page the row came from | `https://www.rozee.pk/job/jsearch/q/sales` |

Missing values are `null`, never empty strings. Salary is published on fewer than half of Rozee.pk jobs, so `salaryMin`, `salaryMax` and `salaryCurrency` are often null. Values are copied as Rozee gives them: salaries are monthly amounts in the listed currency, and minimum and maximum are often the same number.

### How to use Rozee.pk Jobs Scraper

1. Open the Actor in Apify Console and go to the Input tab.
2. Type a keyword such as `sales`, `python` or `accountant`, or leave it empty to list all jobs.
3. Optionally pick a city (a name like `Lahore` or a Rozee city id like `1188`), an industry (by id or name), a minimum experience level and a job type.
4. Or paste one or more Rozee listing URLs into "Rozee search URLs": a search you already set up on the Rozee.pk website, or a city page such as `https://www.rozee.pk/jobs-in-lahore`. Keyword and filters are then ignored.
5. Set "Maximum results" and click Start.
6. When the run finishes, open the Output tab and export the jobs as JSON, CSV, Excel, XML or HTML, or read them through the API.

Some tips. `maxItems` is the total across all searches in the run, and the run stops as soon as it reaches it. Rozee shows 20 jobs per page and the Actor sends one request at a time, 10 to 12 seconds apart, so it doesn't trip Rozee's bot protection; a run of 50 jobs takes under a minute and a run of 1,000 jobs about ten minutes. Schedule the Actor daily and keep only new `jobId` values to build a job alert feed.

When you search with a keyword, Rozee.pk adds a few pinned or featured jobs that have nothing to do with it. The Actor drops every job whose title, company, skills and description don't contain any word of your keyword (words of three letters or more), and logs how many it dropped. That is why a keyword with no real matches returns 0 results instead of three random jobs. Rozee.pk only understands English keywords: an Urdu keyword is ignored by the site, so it returns 0 results here.

### Input

| Field | Type | Required | Description |
|---|---|---|---|
| `keyword` | string | No | Job title, skill or company to search, e.g. `sales`. Empty returns all jobs. |
| `city` | string | No | City name (`Lahore`, `Karachi`, `Islamabad`, case-insensitive) or a numeric Rozee city id (`1188` is Peshawar). An unknown city name fails the run with a message. |
| `industry` | string | No | Rozee industry id or name, e.g. `1` or `Information Technology`, `3` or `Banking`, `68` or `Healthcare`. |
| `experience` | string | No | Minimum experience id: `713` Fresh, `715` Less than 1 Year, `717` 1 Year, `721` 3 Years, `735` 10 Years. Labels such as `3 Years` also work. |
| `jobType` | string | No | `571` Full Time/Permanent, `567` Contract, `569` Part Time. Labels such as `Full Time` also work. |
| `startUrls` | array | No | Rozee listing URLs used as-is, e.g. `[{"url": "https://www.rozee.pk/job/jsearch/q/accountant/fc/1184"}]` or a city page like `https://www.rozee.pk/jobs-in-lahore`. Keyword and filters are ignored when this is set. |
| `maxItems` | integer | No | Maximum number of jobs across all searches, 1-10000, default 50. |
| `proxyConfiguration` | object | No | Proxy settings. Default: Apify Proxy (datacenter). |

Example input: sales jobs in Lahore, full time only.

```json
{
    "keyword": "sales",
    "city": "Lahore",
    "jobType": "571",
    "maxItems": 30,
    "proxyConfiguration": { "useApifyProxy": true }
}
```

Example input with a search URL (accountant jobs in Karachi):

```json
{
    "startUrls": [{ "url": "https://www.rozee.pk/job/jsearch/q/accountant/fc/1184" }],
    "maxItems": 40
}
```

Common city ids: Islamabad `1180`, Karachi `1184`, Lahore `1185`, Peshawar `1188`, Rawalpindi `1190`. Any of the 576 cities Rozee lists works by name.

### Output

Each job is one row in the run's dataset. Two real rows from a local run with `{"keyword": "sales", "maxItems": 10}` (descriptions shortened here):

```json
[
    {
        "id": "1911532",
        "jobId": "1911532",
        "title": "Sales Verification Specialist- Call Center",
        "company": "Prime BPO 5",
        "city": "Rawalpindi",
        "cities": [
            "Rawalpindi"
        ],
        "country": "Pakistan",
        "jobType": "Full Time/Permanent",
        "industryId": 63,
        "industry": "BPO",
        "salaryMin": 100000,
        "salaryMax": 100000,
        "salaryCurrency": "PKR",
        "experienceMin": "1 Year",
        "experienceMax": null,
        "postedDate": "Oct 17, 2026",
        "postedAt": "2026-10-17T01:16:59Z",
        "applyBy": "2026-11-17T00:00:00Z",
        "skills": [
            "Call Center experience",
            "Night Shift",
            "Sales Process Knowledge",
            "English Communication",
            "Customer Service",
            "Time Management",
            "Attention to Detail",
            "Customer Verification Techniques"
        ],
        "descriptionHtml": "Prime BPO 5 is seeking a dedicated Sales Verification Consultant to join our US campaign team. This role requires candidates to apply their knowledge of custome...",
        "description": "Prime BPO 5 is seeking a dedicated Sales Verification Consultant to join our US campaign team. This role requires candidates to apply their knowledge of custome...",
        "source": "ROZEEGPT.AI",
        "isExternal": true,
        "url": "https://www.rozee.pk/prime-bpo-5-sales-verification-specialist-call-center-jobs-1911532",
        "searchQuery": "sales",
        "scrapedAt": "2026-10-19T00:20:06.125Z",
        "sourceUrl": "https://www.rozee.pk/job/jsearch/q/sales"
    },
    {
        "id": "1913961",
        "jobId": "1913961",
        "title": "Hiring Now – Experienced Medicare Sales Agents | Strive BPO",
        "company": "Strive BPO LLP",
        "city": "Rawalpindi",
        "cities": [
            "Rawalpindi"
        ],
        "country": "Pakistan",
        "jobType": "First Shift (Day)",
        "industryId": 35,
        "industry": "Business Development",
        "salaryMin": null,
        "salaryMax": null,
        "salaryCurrency": null,
        "experienceMin": "5 Years",
        "experienceMax": "5 Years",
        "postedDate": "Oct 18, 2026",
        "postedAt": "2026-10-18T02:36:49Z",
        "applyBy": "2026-10-23T00:00:00Z",
        "skills": [
            "Whatsapp",
            "time-and-attendance",
            "environment-health-and-safety-hsse",
            "ecology-environment",
            "lift-and-shift",
            "business-process-outsourcing-bpo",
            "sales-performance"
        ],
        "descriptionHtml": "Strive BPO is seeking experienced Medicare Sales Agents to join our dynamic team based in Rawalpindi. This is an excellent opportunity for sales professionals w...",
        "description": "Strive BPO is seeking experienced Medicare Sales Agents to join our dynamic team based in Rawalpindi. This is an excellent opportunity for sales professionals w...",
        "source": "BeBee",
        "isExternal": true,
        "url": "https://www.rozee.pk/hiring-now-%e2%80%93-experienced-medicare-sales-agents-strive-bpo-rawalpindi-jobs-1913961",
        "searchQuery": "sales",
        "scrapedAt": "2026-10-19T00:20:06.113Z",
        "sourceUrl": "https://www.rozee.pk/job/jsearch/q/sales"
    }
]
```

You can download the dataset in JSON, CSV, Excel, XML, HTML or RSS format from the Output tab, or read it through the Apify API.

### How much does it cost to scrape Rozee.pk?

Rozee.pk Jobs Scraper is charged per result. You pay only for the jobs returned, and `maxItems` caps how many that can be, so a run never costs more than `maxItems` results. Jobs that the relevance filter drops are not charged. See the Pricing tab for the current price. You can also set a maximum cost per run in the run options: the Actor stops cleanly when it is reached and tells you so in the status message.

### Use with AI agents (MCP)

Connect Rozee.pk Jobs Scraper to Claude, Cursor or any MCP client through the Apify MCP server:

```json
{
    "mcpServers": {
        "apify": {
            "url": "https://mcp.apify.com/?tools=axiomworks/rozee-jobs-scraper"
        }
    }
}
```

Example prompts:

1. "Find 30 full-time sales jobs in Lahore on Rozee.pk and list the companies that are hiring, with the apply-by date."
2. "Get 100 Python jobs from Rozee.pk and summarise which skills are asked for most often and what salaries are published."
3. "Which banks in Pakistan are hiring people with 3 years of experience right now? Use Rozee.pk industry 3 and experience 721."

The input schema tells the agent which fields exist, so it can pick a city, industry or job type filter on its own.

### Integrations and API

Run Rozee.pk Jobs Scraper from your own code with the Apify API. Set `APIFY_TOKEN` to your Apify API token (send it in the `Authorization` header, never in the URL).

**Python**

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("axiomworks/rozee-jobs-scraper").call(run_input={"keyword": "sales", "city": "Lahore", "maxItems": 50})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["title"], item["company"], item["url"])
```

**JavaScript**

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

const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });
const run = await client.actor('axiomworks/rozee-jobs-scraper').call({ keyword: 'sales', city: 'Lahore', maxItems: 50 });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
```

**cURL**

```bash
curl -X POST "https://api.apify.com/v2/acts/axiomworks~rozee-jobs-scraper/run-sync-get-dataset-items" \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"keyword": "sales", "city": "Lahore", "maxItems": 50}'
```

On the Integrations tab you can connect runs to Make, Zapier, n8n, Google Sheets, Slack or your own webhooks, for example to append each day's new jobs to a spreadsheet.

### FAQ

**How many jobs can I get?**
Up to 10,000 per run. Rozee.pk lists around 10,000 open jobs in total; a keyword search usually matches a few dozen to a few thousand. Narrow searches with the city, industry, experience and job type filters.

**Why did my run return 0 results?**
Either nothing on Rozee.pk matches the search, or the keyword isn't mentioned in any job (see the relevance filter above). The status message says which. Try a broader keyword, remove a filter, or check the same search on the Rozee.pk website. A misspelled city name fails the run with a message listing how to write it.

**Why do some jobs have no salary?**
Most employers on Rozee.pk don't publish a salary. When a salary is published, `salaryMin`, `salaryMax` and `salaryCurrency` are filled.

**What are external jobs?**
Rozee.pk also shows jobs it collects from other boards such as BeBee and Indeed. Those rows have `isExternal: true` and the original board in `source`. Some of them are for cities outside Pakistan with the same name (for example Hyderabad, India); the Actor copies the location as Rozee gives it.

**Does it get the full job description?**
Yes. `descriptionHtml` is the full description with its formatting and `description` is the same text without HTML, not the short teaser shown in search results.

**How fresh is the data?**
Every run reads Rozee.pk live, so you get the jobs listed at that moment. Schedule the Actor to keep a feed up to date.

**What if Rozee.pk blocks the run?**
Rozee.pk uses Cloudflare, and when overall traffic spikes it shows a "Just a moment" check page to every visitor for a few minutes, whatever IP or browser they use. The Actor never tries to solve it. When it meets the check it waits a minute and sends one test request, repeating that (with the gap growing to 90 seconds) for up to 10 minutes while the status message says it is waiting. The Actor waits the same way, before its first result, when Rozee answers with timeouts, server errors or pages without listings, so a busy site delays a run rather than ending it empty. The check normally clears within minutes and the run carries on. If it is still there after 10 minutes, the run fails with a message saying so, and jobs already collected stay in the dataset; retry a little later. Residential proxies don't help here, because the check is site-wide, not tied to your IP.

### Is it legal to scrape Rozee.pk?

This Actor collects only job listings that Rozee.pk shows publicly to every visitor, without logging in. Job descriptions sometimes name recruiters or contact people; if you store or use personal data, you are responsible for following the laws that apply to you, such as GDPR or Pakistan's data protection rules. This is not legal advice; ask a lawyer if you are unsure about your use case.

Rozee.pk Jobs Scraper is an independent tool. It is not affiliated with, endorsed by or sponsored by Rozee.pk.

### Related Actors

| Actor | What it does |
|---|---|
| [LinkedIn Jobs Scraper](https://apify.com/axiomworks/linkedin-jobs-scraper) | Collects job listings from LinkedIn |
| [Google Jobs Scraper](https://apify.com/axiomworks/google-jobs-scraper) | Collects job listings from Google Jobs |
| [Reed.co.uk Jobs Scraper](https://apify.com/axiomworks/reed-jobs-scraper) | Collects job listings from Reed.co.uk |
| [LinkedIn Employees Scraper](https://apify.com/axiomworks/linkedin-company-employees-scraper) | Finds people working at a company, for outreach after you find who is hiring |

### Feedback

Found a bug or need a field that isn't here? Open an issue on the Issues tab and we'll look at it.

# Actor input Schema

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

Job title, skill or company to search on Rozee.pk, e.g. 'sales' or 'python developer'. Empty (default) returns all jobs that match the filters. Only jobs whose title, company, skills or description contain a keyword word (3+ letters) are returned, so a keyword with no real matches returns 0 results with a status message. English only: Rozee ignores Urdu and other non-English terms, which then return 0 results.

## `city` (type: `string`):

City to filter by: a Pakistani city name as Rozee spells it (case-insensitive, e.g. 'Lahore', 'Karachi', 'Islamabad') or a numeric Rozee cityID (e.g. '1188' for Peshawar). Empty (default) means all cities. An unknown city name fails the run with a message saying so.

## `industry` (type: `string`):

Industry to filter by, as a Rozee industry id ('1' Information Technology, '3' Banking/Financial Services, '68' Healthcare) or its name ('Information Technology', 'Banking', 'Healthcare'). Pick from the list or type another numeric id. Empty (default) means all industries.

## `experience` (type: `string`):

Experience filter as a Rozee id: '713' Fresh, '715' Less than 1 Year, '717' 1 Year, '719' 2 Years, '721' 3 Years ... '735' 10 Years, '755' 20 Years, '765' 25 Years. Labels such as 'Fresh' or '3 Years' also work. Empty (default) means any experience.

## `jobType` (type: `string`):

Job type filter: '571' Full Time/Permanent, '567' Contract, '569' Part Time (labels such as 'Full Time' or 'Contract' also work). Empty (default) means any job type.

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

Rozee.pk listing URLs to scrape as-is: search pages such as https://www.rozee.pk/job/jsearch/q/accountant/fc/1184, city pages such as https://www.rozee.pk/jobs-in-lahore, or category pages. Give them as \[{"url": "..."}] or plain strings. When set, keyword and the filters above are ignored. Each URL is paged until it runs out or maxItems is reached; a URL that isn't a Rozee listing page returns 0 results with a message.

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

Maximum number of jobs to return in total, shared by all keywords and URLs of the run, 1-10000, default 50. The run stops as soon as this many jobs are saved (20 jobs per page, one request every 10-12 seconds), and you are charged only for jobs returned.

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

Proxy to use for requests, default Apify Proxy (datacenter). Rozee.pk sits behind Cloudflare and sometimes shows a site-wide check page to every visitor for a few minutes: the Actor then waits, testing once every 90 seconds for up to 10 minutes, and fails with a clear message only if the check never clears. Changing the proxy does not avoid that check; residential proxies are needed only if your runs are blocked for another reason.

## Actor input object example

```json
{
  "keyword": "sales",
  "maxItems": 10,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

Dataset with one item per result, in the order found.

# 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 = {
    "keyword": "sales",
    "maxItems": 10,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("axiomworks/rozee-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 = {
    "keyword": "sales",
    "maxItems": 10,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("axiomworks/rozee-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 '{
  "keyword": "sales",
  "maxItems": 10,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call axiomworks/rozee-jobs-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,axiomworks/rozee-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/H51RSYrziMc3TxIBl/builds/CQfgc113CTaMzLOZl/openapi.json
