# Apna.co Jobs Scraper (`shahidirfan/apna-co-jobs-scraper`) Actor

Extract real-time job listings, salary ranges, and company profiles from Apna.co. Scrape employment data for recruitment platforms, job aggregators, and talent analytics. Ideal for job market research and hiring automation.

- **URL**: https://apify.com/shahidirfan/apna-co-jobs-scraper.md
- **Developed by:** [Shahid Irfan](https://apify.com/shahidirfan) (community)
- **Categories:** Jobs, Automation, Developer tools
- **Stats:** 4 total users, 2 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

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

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

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

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


# README

## Apna.co Jobs Scraper

Extract verified Apna.co job listings at scale with flexible support for direct job URLs, keyword searches, city-based searches, and combined keyword-plus-location routes. Collect rich job data including salary ranges, openings, employer details, experience requirements, and structured location data for research, lead generation, and hiring intelligence.

### Features

- **Flexible input flow** — Start from a working Apna job URL or search with keyword and location
- **Rich job records** — Collect titles, companies, salary ranges, openings, work mode, employer preferences, timestamps, and more
- **Pagination control** — Limit pages and output size for fast QA runs or larger production exports
- **Clean dataset output** — Empty and null-only values are removed before records are saved
- **Broad route support** — Works with type, city, keyword, and keyword-plus-city Apna job pages

### Use Cases

#### Hiring Market Research
Track which roles are active in a city, how many openings are available, and what salary ranges employers are offering. Build city-level and role-level hiring snapshots quickly.

#### Sales Prospecting
Find companies actively hiring in specific functions such as software, finance, telesales, or delivery. Use structured employer and location data to enrich outreach lists.

#### Compensation Analysis
Compare salary bands across job types and locations. Use the extracted ranges to benchmark roles and identify hot markets.

#### Job Board Monitoring
Monitor public job activity on Apna across common route types and export consistent datasets for dashboards, alerts, or trend analysis.

### Input Parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `url` | String | No | — | Working Apna jobs URL. If provided, it overrides keyword and location. |
| `keyword` | String | No | `software engineer` | Job keyword or public route phrase. |
| `location` | String | No | — | City or region name shown on Apna. |
| `results_wanted` | Integer | No | `20` | Maximum number of jobs to save. |
| `max_pages` | Integer | No | `5` | Maximum number of paginated pages to visit. |
| `proxyConfiguration` | Object | No | Apify Proxy | Proxy settings for larger or more sensitive runs. |
| `startUrl` | String | No | — | Alias for `url`. |
| `startUrls` | Array | No | — | Optional list of candidate Apna jobs URLs. |

### Output Data

Each item in the dataset contains common fields such as:

| Field | Type | Description |
|-------|------|-------------|
| `job_id` | Integer | Unique Apna job ID |
| `title` | String | Job title |
| `description_text` | String | Plain text description |
| `description_html` | String | Sanitized internal HTML description |
| `company` | String | Employer name |
| `url` | String | Public Apna job URL |
| `location` | String | Main display location |
| `city` | String | City name when available |
| `category` | String | Job category |
| `department_name` | String | Department name |
| `min_salary` | Integer | Minimum salary |
| `max_salary` | Integer | Maximum salary |
| `experience_in_years` | String | Experience requirement summary |
| `no_of_openings` | Integer | Number of openings |
| `job_address_line_1` | String | Flattened job address |
| `job_address_area` | String | Flattened job area |
| `job_address_city` | String | Flattened job city |
| `company_address_line_1` | String | Flattened company address |
| `company_address_area` | String | Flattened company area |
| `company_address_city` | String | Flattened company city |
| `work_mode` | String | Work from office, work from home, or flexible |
| `created_on` | String | Job creation timestamp |
| `expiry` | String | Expiry date |
| `ui_tags` | Array | Visible job tags |

Employer preference and international job flags are also flattened into simple fields when available.

### Usage Examples

#### Direct URL Extraction

```json
{
	"url": "https://apna.co/jobs/full_time-jobs",
	"results_wanted": 20,
	"max_pages": 3
}
````

#### Keyword and Location Search

```json
{
	"keyword": "software engineer",
	"location": "Bengaluru/Bangalore",
	"results_wanted": 30,
	"max_pages": 4
}
```

#### City Route Collection

```json
{
	"url": "https://apna.co/jobs/jobs-in-mumbai_bombay",
	"results_wanted": 50,
	"max_pages": 5,
	"proxyConfiguration": {
		"useApifyProxy": true,
		"apifyProxyGroups": ["RESIDENTIAL"]
	}
}
```

### Sample Output

```json
{
	"job_id": 539180069,
	"title": "Python Fullstack Developer",
	"description_text": "Sr. Python Full Stack Developer Bangalore Onsite - Immediate ...",
	"description_html": "<p>Sr. Python Full Stack Developer<br>Bangalore Onsite - Immediate</p>",
	"company": "Carpe Astra Technology LLP",
	"url": "https://apna.co/job/bengaluru-bangalore/python-fullstack-developer-539180069",
	"location": "Bengaluru/Bangalore",
	"city": "Bengaluru",
	"job_address_line_1": "Bangalore, Karnataka, India",
	"job_address_area": "Kailasipalyam",
	"job_address_city": "Bengaluru",
	"company_address_line_1": "Bangalore, Karnataka, India",
	"company_address_area": "Kailasipalyam",
	"company_address_city": "Bengaluru",
	"category": "Software / Web Developer",
	"department_name": "Software Engineering",
	"min_salary": 130000,
	"max_salary": 149999,
	"experience_in_years": "Min. 5 Years",
	"no_of_openings": 10,
	"work_mode": "Work from office",
	"created_on": "2026-04-10T00:00:00.000+00:00",
	"expiry": "2026-04-25",
	"ui_tags": [
		"Work from Office",
		"Full Time",
		"Min. 5 years",
		"Good (Intermediate / Advanced) English"
	]
}
```

### Tips for Best Results

#### Use Public Apna Job Routes

- Use working URLs from Apna job pages for the most precise extraction.
- Supported patterns include job type routes, city routes, keyword routes, and keyword-plus-city routes.

#### Keep QA Runs Small

- Start with `results_wanted: 20` and `max_pages: 3` for quick validation.
- Increase limits after you confirm the route returns the jobs you want.

#### Match Apna Naming

- Keywords work best when they match public Apna route phrases such as `software engineer`, `accounts finance`, or `full time`.
- Use city names as shown on Apna, such as `Bengaluru/Bangalore` or `Mumbai/Bombay`.

### Proxy Configuration

For reliable production runs, residential proxies are recommended:

```json
{
	"proxyConfiguration": {
		"useApifyProxy": true,
		"apifyProxyGroups": ["RESIDENTIAL"]
	}
}
```

### Integrations

- **Google Sheets** — Export job data for quick analysis
- **Airtable** — Build searchable recruiting datasets
- **Make** — Automate downstream processing and alerts
- **Zapier** — Push new listings into CRM or messaging workflows
- **Webhooks** — Deliver fresh datasets to internal systems

### Frequently Asked Questions

#### Can I use a direct Apna URL instead of keyword and location?

Yes. If you provide `url`, the actor uses that route directly and ignores keyword and location.

#### What if my keyword does not match a public Apna route?

The actor tries the closest valid route and continues with keyword filtering when needed, but exact public route phrases will always be more precise.

#### Does the dataset include null values?

No. Empty and null-only fields are removed before records are stored.

# Actor input Schema

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

Optional list of Apna jobs URLs. The first working URL is used.

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

Job keyword or public Apna route phrase, for example Software Engineer, Accounts Finance, or Full Time.

## `location` (type: `string`):

City or region shown on Apna, for example Bengaluru/Bangalore, Mumbai/Bombay, or Delhi-NCR.

## `results_wanted` (type: `integer`):

The maximum number of jobs to collect.

## `max_pages` (type: `integer`):

A safety cap on the number of paginated results pages to visit.

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

Use Apify Proxy for reliable large-scale runs.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://apna.co/jobs/software-engineer-jobs-in-bengaluru_bangalore"
    }
  ],
  "keyword": "software engineer",
  "results_wanted": 20,
  "max_pages": 5,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `overview` (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": [
        {
            "url": "https://apna.co/jobs/software-engineer-jobs-in-bengaluru_bangalore"
        }
    ],
    "keyword": "software engineer",
    "results_wanted": 20,
    "max_pages": 5
};

// Run the Actor and wait for it to finish
const run = await client.actor("shahidirfan/apna-co-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 = {
    "startUrls": [{ "url": "https://apna.co/jobs/software-engineer-jobs-in-bengaluru_bangalore" }],
    "keyword": "software engineer",
    "results_wanted": 20,
    "max_pages": 5,
}

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

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).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://apna.co/jobs/software-engineer-jobs-in-bengaluru_bangalore"
    }
  ],
  "keyword": "software engineer",
  "results_wanted": 20,
  "max_pages": 5
}' |
apify call shahidirfan/apna-co-jobs-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=shahidirfan/apna-co-jobs-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Apna.co Jobs Scraper",
        "description": "Extract real-time job listings, salary ranges, and company profiles from Apna.co. Scrape employment data for recruitment platforms, job aggregators, and talent analytics. Ideal for job market research and hiring automation.",
        "version": "0.0",
        "x-build-id": "69yFoaSBJldvomMWk"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/shahidirfan~apna-co-jobs-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-shahidirfan-apna-co-jobs-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/shahidirfan~apna-co-jobs-scraper/runs": {
            "post": {
                "operationId": "runs-sync-shahidirfan-apna-co-jobs-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/shahidirfan~apna-co-jobs-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-shahidirfan-apna-co-jobs-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "startUrls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "Optional list of Apna jobs URLs. The first working URL is used.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "keyword": {
                        "title": "Keyword",
                        "type": "string",
                        "description": "Job keyword or public Apna route phrase, for example Software Engineer, Accounts Finance, or Full Time."
                    },
                    "location": {
                        "title": "Location",
                        "type": "string",
                        "description": "City or region shown on Apna, for example Bengaluru/Bangalore, Mumbai/Bombay, or Delhi-NCR."
                    },
                    "results_wanted": {
                        "title": "Maximum number of jobs",
                        "minimum": 1,
                        "type": "integer",
                        "description": "The maximum number of jobs to collect.",
                        "default": 20
                    },
                    "max_pages": {
                        "title": "Maximum number of pages",
                        "minimum": 1,
                        "type": "integer",
                        "description": "A safety cap on the number of paginated results pages to visit.",
                        "default": 5
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Use Apify Proxy for reliable large-scale runs.",
                        "default": {
                            "useApifyProxy": false
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
