# Rozee.pk Scraper — Pakistan Jobs & Salaries, No Phones (`highbrow_fame/rozee-jobs`) Actor

Scrape job ads from rozee.pk, Pakistan's job board: title, company, city, salary in PKR, experience, job type, shift, posted and apply-before dates, skills and the full ad. No phones.

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

## Pricing

$0.80 / 1,000 job delivereds

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?

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

## Rozee.pk Scraper — Pakistan Jobs & Salaries, No Phones

Get job ads from rozee.pk, Pakistan's big job board: title, company, city, the salary in PKR a month (as text and as numbers), the experience asked in years, job type, shift and remote / hybrid, career level, degree, skills, when the job was posted and the "Apply Before" date, which site rozee.pk took the ad from — and, if you want, the full ad as plain text. Paste your rozee.pk search links — or just type a job title and a city.

**Why this one**

- 🔗 **Your search, as you set it up.** Set any filter you like on rozee.pk — city, experience, salary, job type, shift, career level, industry — and paste the link, or a city page such as `https://www.rozee.pk/jobs-in-lahore`. Or type keywords and cities here ("sales" in "Karachi") and choose the experience range, job type, remote / hybrid and a salary range below.
- 🧹 **Fields you can sort on.** rozee.pk mixes the job type, the shift and "work from home" in the same two fields; every job here has them apart in `jobType`, `shift` and `workMode`. The experience comes as years (`experienceMinYears`, `experienceMaxYears`), the salary as numbers (`salaryMin`, `salaryMax`). rozee.pk writes Pakistan time as if it were UTC; `postedAt` is the real moment, and `applyBefore` is the date the site shows.
- 🧭 **Where each ad comes from.** rozee.pk takes most of its jobs from other sites. `source` says from which: in the live run below 1,267 of 1,549 jobs came from BeBee, 161 from ROZEEGPT.AI, 64 from Indeed, 22 from Mustakbil and 2 were posted on rozee.pk itself. The company is the employer named in the ad, not rozee.pk's own account.
- ⚡ **To the end of a search.** A live test run read five searches — every job in Lahore, jobs asking 2-3 years that pay at least PKR 40,000, remote and work-from-home jobs, "sales" in Karachi and in Islamabad for 1-5 years' experience — 1,549 jobs with the full ad in 4.1 minutes: every job rozee.pk counted for each search (1,087 of 1,087, 89 of 89, 154 of 154, 162 of 162, 57 of 57).
- 🔒 **No phone numbers, no recruiter names.** The account ids rozee.pk keeps with every job are never read. Phone numbers (Pakistani mobiles, landlines and 111 numbers), e-mail addresses and the lines that name a contact person are taken out of the ads.
- 💸 **You pay only for jobs delivered.** A link that is not a rozee.pk search, or a city rozee.pk does not know, comes back as a free record with the reason.

### What you get

For every job:

| Field | What it is |
|---|---|
| `title`, `jobId`, `url` | the job ad on rozee.pk |
| `company`, `isConfidentialCompany`, `companyUrl` | the employer as the ad names it; employers that hide their name; the company's rozee.pk page when the company posted the job itself |
| `location`, `cities`, `country` | the city as rozee.pk shows it ("Lahore", "Multiple Cities", "All Cities"), every city of the job, and the country |
| `salary`, `salaryMin`, `salaryMax`, `salaryCurrency` | the pay ("PKR 30,000 - 35,000 a month") and its numbers — empty when the ad shows none |
| `experience`, `experienceMinYears`, `experienceMaxYears` | the experience asked ("1 Year - 3 Years") and its years (0 for fresh graduates) |
| `jobType`, `shift`, `workMode` | Full Time/Permanent, Contract, Internship, Temporary …; First Shift (Day) …; Remote, Work From Home or Hybrid Work Model |
| `careerLevel`, `genderPreference`, `degree`, `skills` | what the employer asks for, as rozee.pk lists it |
| `postedAt`, `postedDate`, `applyBefore` | when it was posted (UTC, and the date in Pakistan), and the "Apply Before" date rozee.pk shows |
| `source` | the site rozee.pk took the ad from (BeBee, ROZEEGPT.AI, Indeed, Mustakbil …), or `ROZEE.PK` |
| `input`, `position`, `scrapedAt`, `status`, `error` | which search it came from, and why a search gave nothing |

With **Add the full job ad** also `description`: the whole ad as plain text, with its line breaks and lists.

#### Example

A real record from a live run with the full ad — jobs asking 2-3 years and paying at least PKR 40,000 a month, 26 September 2026:

```json
{
  "input": "https://www.rozee.pk/job/jsearch/q/all/fe/719:721/fs/40000:*",
  "position": 1,
  "jobId": "1883041",
  "url": "https://www.rozee.pk/customer-experience-community-associate-lahore-jobs-1883041",
  "title": "Customer Experience & Community Associate",
  "company": "Sharp Brains Global",
  "isConfidentialCompany": false,
  "companyUrl": null,
  "location": "Lahore",
  "cities": ["Lahore"],
  "country": "Pakistan",
  "salary": "PKR 100,000 a month",
  "salaryMin": 100000,
  "salaryMax": 100000,
  "salaryCurrency": "PKR",
  "experience": "2 Years",
  "experienceMinYears": 2,
  "experienceMaxYears": 2,
  "jobType": null,
  "shift": "First Shift (Day)",
  "workMode": null,
  "careerLevel": "Entry Level",
  "genderPreference": "No Preference",
  "degree": null,
  "skills": ["Excellent Spoken English And Urdu", "Tiktok)", "Calm And Professional Under Pressure", "instagram", "Social media proficiency (Facebook", "Strong written English proficiency", "Good judgment and quick thinking", "Basic productivity tools (Google Sheets)"],
  "postedAt": "2026-09-25T19:30:55.000Z",
  "postedDate": "2026-09-26",
  "applyBefore": "2026-10-02",
  "source": "Indeed",
  "description": "Our client is a rapidly expanding direct-to-consumer (D2C) brand that operates exclusively online, delivering products directly to customers across the country. Engaging with thousands of customers weekly through advertisements, social media channels, and a dedicated helpline, the company seeks representatives who reflect the …",
  "status": "OK",
  "scrapedAt": "2026-09-26T01:56:49.681Z"
}
```

### How to use it

1. Paste **Search links** from rozee.pk, one per line — or type **Keywords** and **Cities** (every keyword is searched in every city) and choose the filters.
2. Set **Max jobs per search**, and tick **Add the full job ad** if you need the description.
3. Press **Start**, and download the results from the **Output** tab as JSON, CSV or Excel.

To follow new jobs, save your input as a task and schedule it daily; `postedAt` tells you what is new.

You can also call it from the Apify API, from Make, Zapier or n8n, or from an AI agent through the Apify MCP server.

### Pricing

You are charged **per job delivered** — see the price on this page. The full ad comes with the search and costs nothing extra. Links that are not rozee.pk searches and cities rozee.pk does not know are free.

### FAQ

**How many jobs per search?** As many as the search has: rozee.pk lets a search be read to its last page, 20 jobs a page. rozee.pk held 2,790 jobs in all on 26 September 2026 (1,087 in Lahore). The run asks for a page at most every 3 seconds — rozee.pk's Cloudflare turns faster clients away — so it delivers about 6 jobs a second: 1,549 jobs in 248 seconds in the live run above. A small search is quick: the 30-job example input took 7 to 12 seconds in five live runs.

**Are the filters obeyed?** Yes, rozee.pk applies them, and the run checks the salary range itself. In the live run: all 1,087 jobs from the Lahore page had Lahore among their cities; all 89 jobs from a "2 or 3 years, PKR 40,000 or more" link asked 2 or 3 years and paid PKR 40,000 or more; all 154 jobs from a "remote or work from home" link were Remote (25) or Work From Home (129); all 219 "sales" jobs from the form asked 1 to 5 years. A salary filter leaves out jobs that show no salary. rozee.pk's keyword search is broad: 98 of the 162 "sales" jobs in Karachi had "sales" in the title, and all 162 in the title, the ad or the skills.

**Why is the salary empty for most jobs?** The ad does not show one. In the live run 223 of 1,549 jobs showed a salary (median PKR 60,000 a month).

**Why is the job type empty for most jobs?** rozee.pk gives most jobs only a shift ("First Shift (Day)") and no job type: 261 of the 1,549 jobs in the live run had a job type, 1,364 a shift and 198 were remote, work from home or hybrid. Choosing a job type in the form leaves out the jobs without one.

**Where do the jobs come from?** rozee.pk collects most of its jobs from other job sites and lists them under its own account; `source` names the site and `company` the employer. The rozee.pk link of a ROZEEGPT.AI job forwards to rozeegpt.ai, where you apply.

**What if rozee.pk's bot protection steps in?** rozee.pk is behind Cloudflare. It asks clients that come too fast to slow down — the run then waits and asks again. After a great many pages in a short time it turns a server away with a check page for a while: in our tests, after about 175 pages (3,500 jobs) from Apify in 10 minutes — two big runs back to back — and for 5 to about 25 minutes after that. The run never tries to get round a check page: it stops asking at once, keeps the jobs it has delivered, and every search it could not finish comes back as a free `FAILED` record that says so. Run it again about half an hour later. Runs of a few hundred jobs are well below that.

**Why no phone numbers or recruiter names?** They are personal data. Every job has its `url`; applicants apply on rozee.pk. The account ids rozee.pk keeps with each job are never read. In the ads, phone numbers (Pakistani mobiles with or without +92, landlines and 111 numbers), e-mail addresses, lines that name a contact person ("Contact Person: …", a "Regards," sign-off) and names after Mr. / Ms. are taken out. rozee.pk's ads are clean: the 1,549 full ads of the live run held no phone number, e-mail address or contact name at all. Rules can miss an unusual wording, which is why the full ad is off by default.

**Is this affiliated with rozee.pk?** No. This is an independent tool that reads public job ads on rozee.pk.

**Like it?** A short review on the Store page helps other people find this Actor. Something missing or broken? Tell us on the Issues tab — we read every one.

# Actor input Schema

## `searchUrls` (type: `array`):

Set up a search on rozee.pk with all the filters you want and paste the address of the results page (https://www.rozee.pk/job/jsearch/q/…), or a city page such as https://www.rozee.pk/jobs-in-lahore. One per line.

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

Or search here without a link: job titles, skills or companies (accountant, sales manager, React). Every keyword is searched in every city below. The filters below apply.

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

Cities as rozee.pk writes them: Lahore, Karachi, Islamabad, Rawalpindi, Faisalabad, Multan … Leave empty for all of Pakistan.

## `minExperienceYears` (type: `integer`):

Optional: only jobs that ask for at least this many years (0 = fresh graduates too). For the keywords and cities above.

## `maxExperienceYears` (type: `integer`):

Optional: only jobs that ask for at most this many years (0 = fresh graduates and under a year).

## `jobTypes` (type: `array`):

Optional: any of these. Most jobs on rozee.pk carry only a shift, no job type — choosing a type leaves those out.

## `workMode` (type: `string`):

Optional.

## `minSalary` (type: `integer`):

Optional. Jobs that do not show a salary are left out when you set a salary.

## `maxSalary` (type: `integer`):

Optional.

## `maxListingsPerSearch` (type: `integer`):

Stops each search after this many jobs.

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

Adds the whole ad as plain text (phone numbers, e-mail addresses and contact persons taken out). It comes with the search, so it adds no time.

## `maxConcurrency` (type: `integer`):

How many searches to work on at the same time. All of them share one polite pace towards rozee.pk.

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

Used only when a request cannot reach rozee.pk: the first try goes out directly.

## Actor input object example

```json
{
  "searchUrls": [
    "https://www.rozee.pk/job/jsearch/q/sales/fc/1185"
  ],
  "workMode": "any",
  "maxListingsPerSearch": 30,
  "includeDescription": false,
  "maxConcurrency": 3,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

Every result as a JSON record, with a status for each input.

## `resultsCsv` (type: `string`):

The same records as CSV, for a spreadsheet.

# 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 = {
    "searchUrls": [
        "https://www.rozee.pk/job/jsearch/q/sales/fc/1185"
    ],
    "maxListingsPerSearch": 30,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("highbrow_fame/rozee-jobs").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 = {
    "searchUrls": ["https://www.rozee.pk/job/jsearch/q/sales/fc/1185"],
    "maxListingsPerSearch": 30,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("highbrow_fame/rozee-jobs").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 '{
  "searchUrls": [
    "https://www.rozee.pk/job/jsearch/q/sales/fc/1185"
  ],
  "maxListingsPerSearch": 30,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call highbrow_fame/rozee-jobs --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,highbrow_fame/rozee-jobs"
        }
    }
}
```

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/lK8af2oCcZHZwd8PK/builds/9Dr5da9YcAfnIxDvJ/openapi.json
