# Timesjobs Scraper 💼 (`shahidirfan/timesjobs-scraper`) Actor

Extract job listings efficiently from Timesjobs, a leading Indian career portal. This lightweight actor is designed for fast data collection. For optimal stability and to prevent blocking, the use of residential proxies is strongly recommended.

- **URL**: https://apify.com/shahidirfan/timesjobs-scraper.md
- **Developed by:** [Shahid Irfan](https://apify.com/shahidirfan) (community)
- **Categories:** Jobs, Developer tools, Automation
- **Stats:** 23 total users, 5 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $1.00 / 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.

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

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

## TimesJobs Job Scraper

Extract job listings from TimesJobs quickly and reliably. Collect structured job data such as title, company, location, skills, salary, posting date, and description at scale. Useful for hiring research, job monitoring, and market analysis.

### Features

- **Targeted Search** — Filter by keyword, location, and experience range.
- **Automatic Pagination** — Collects jobs automatically until `results_wanted` is reached.
- **Detailed Records** — Includes job metadata and full description fields.
- **Clean Output** — Structured dataset ready for analysis and automation.
- **Flexible Runs** — Works for quick checks and large collection runs.

### Use Cases

#### Recruitment Research
Build role-specific talent maps by collecting listings across locations and experience bands.

#### Job Market Monitoring
Track demand, salary patterns, and role trends over time with repeatable data collection.

#### Lead Generation
Find active hiring companies and open roles for outbound recruitment and staffing workflows.

#### Career Intelligence
Analyze which skills and requirements appear most often for your target roles.

---

### Input Parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `startUrl` | String | No | — | Optional TimesJobs search URL. If provided, it can seed search filters. |
| `keyword` | String | No | `"software developer"` | Job keyword or role title to search. |
| `location` | String | No | `"Bengaluru"` | City/location filter. |
| `experience` | String | No | `"0-5"` | Experience range in `min-max` format. |
| `results_wanted` | Integer | No | `20` | Number of jobs to collect. Pagination is auto-calculated internally. |
| `proxyConfiguration` | Object | No | Direct mode | Optional proxy settings. Direct API mode is fastest; proxy fallback helps when blocking is detected. |

---

### Output Data

Each dataset item may include the following fields:

| Field | Type | Description |
|-------|------|-------------|
| `title` | String | Job title. |
| `company` | String | Hiring company name. |
| `experience` | String | Experience requirement text. |
| `location` | String | Job location text. |
| `skills` | Array | Skill keywords list. |
| `salary` | String | Salary information when available. |
| `job_type` | String | Employment/job type. |
| `date_posted` | String | Posted date text. |
| `description_html` | String | Job description in HTML format. |
| `description_text` | String | Job description in plain text format. |
| `url` | String | Job detail URL. |
| `job_id` | String | TimesJobs job identifier. |
| `company_description` | String | Company description when available. |
| `address` | String | Address field when available. |
| `vacancies` | Number | Vacancy count when available. |
| `external_job_url` | String | External apply/job URL when available. |
| `source` | String | Source marker. |

---

### Usage Examples

#### Basic Search

```json
{
  "keyword": "software developer",
  "location": "Bengaluru",
  "experience": "0-5",
  "results_wanted": 20
}
````

#### Higher Volume Collection

```json
{
  "keyword": "data analyst",
  "location": "Mumbai",
  "experience": "2-8",
  "results_wanted": 200
}
```

#### Start From Search URL

```json
{
  "startUrl": "https://www.timesjobs.com/candidate/job-search.html?searchType=personalizedSearch&from=submit&txtKeywords=python%20developer&txtLocation=Pune",
  "results_wanted": 50
}
```

***

### Sample Output

```json
{
  "title": "Software Engineer",
  "company": "Example Technologies",
  "experience": "2 - 5 Yrs",
  "location": "Bengaluru",
  "skills": ["JavaScript", "Node.js", "SQL"],
  "salary": "6.00 LPA - 10.00 LPA",
  "job_type": "Onsite",
  "date_posted": "14 Feb, 2026",
  "description_html": "<p>Role details...</p>",
  "description_text": "Role details...",
  "url": "https://www.timesjobs.com/job-detail/...",
  "job_id": "12345678",
  "company_description": null,
  "address": "Bengaluru",
  "vacancies": 2,
  "external_job_url": null,
  "source": "api"
}
```

***

### Tips for Best Results

#### Start Small

- Begin with `results_wanted: 20` to validate filters quickly.
- Increase volume after confirming result quality.

#### Improve Relevance

- Use specific keywords like `"react developer"` instead of broad terms.
- Combine `keyword`, `location`, and `experience` for tighter targeting.

#### Improve Reliability

- Keep default direct mode for best speed.
- Enable proxy only if you observe blocking in your runs.
- Run in batches if collecting very large datasets.

***

### Integrations

Connect output data with:

- **Google Sheets** — Build reports and dashboards.
- **Airtable** — Create searchable hiring databases.
- **Make** — Trigger downstream automation.
- **Zapier** — Connect with CRM and alerting workflows.
- **Webhooks** — Send data to custom services.

#### Export Formats

- **JSON** — Best for APIs and apps.
- **CSV** — Best for spreadsheets.
- **Excel** — Best for business reporting.
- **XML** — Best for system interoperability.

***

### Frequently Asked Questions

#### How many jobs can I collect in one run?

You can request as many as available, but run time increases with volume and detail depth.

#### Do I need to set page numbers manually?

No. Pagination is handled automatically based on `results_wanted`.

#### Why are some fields empty?

Some listings do not provide every field, so null or fallback values can appear.

#### Can I schedule this actor?

Yes. You can schedule recurring runs in Apify for daily or hourly monitoring.

#### Can I export to CSV?

Yes. Dataset exports are available in JSON, CSV, Excel, and more.

***

### Support

For issues or feature requests, use the Apify Console.

#### Resources

- [Apify Documentation](https://docs.apify.com/)
- [API Reference](https://docs.apify.com/api/v2)
- [Scheduling Runs](https://docs.apify.com/platform/schedules)

***

### Legal Notice

This actor is intended for legitimate data collection use cases. You are responsible for complying with applicable laws and the target website terms. Use collected data responsibly.

# Actor input Schema

## `startUrl` (type: `string`):

Start scraping from a specific Timesjobs search URL. If provided, this overrides keyword/location/experience filters.

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

Search for jobs by keyword, such as 'Software Developer', 'Data Scientist', 'Marketing Manager'.

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

Filter jobs by location, e.g., 'Bengaluru', 'Mumbai', 'Delhi', 'Pune'.

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

Filter by experience in years. Format: 'min-max' (e.g., '0-2', '3-5', '5-10').

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

Maximum number of job listings to scrape. Pagination is calculated automatically to reach this target.

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

Optional proxy configuration. API mode runs fastest in direct mode and only uses proxy as fallback when blocking is detected.

## Actor input object example

```json
{
  "startUrl": "https://www.timesjobs.com/candidate/job-search.html?searchType=personalizedSearch&from=submit&txtKeywords=developer",
  "keyword": "python developer",
  "location": "Bengaluru",
  "experience": "0-5",
  "results_wanted": 20,
  "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 = {
    "keyword": "software developer",
    "location": "Bengaluru",
    "experience": "0-5",
    "results_wanted": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("shahidirfan/timesjobs-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": "software developer",
    "location": "Bengaluru",
    "experience": "0-5",
    "results_wanted": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("shahidirfan/timesjobs-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 '{
  "keyword": "software developer",
  "location": "Bengaluru",
  "experience": "0-5",
  "results_wanted": 20
}' |
apify call shahidirfan/timesjobs-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Timesjobs Scraper 💼",
        "description": "Extract job listings efficiently from Timesjobs, a leading Indian career portal. This lightweight actor is designed for fast data collection. For optimal stability and to prevent blocking, the use of residential proxies is strongly recommended.",
        "version": "0.0",
        "x-build-id": "hs2GCI9q8w6ui66Yp"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/shahidirfan~timesjobs-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-shahidirfan-timesjobs-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~timesjobs-scraper/runs": {
            "post": {
                "operationId": "runs-sync-shahidirfan-timesjobs-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~timesjobs-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-shahidirfan-timesjobs-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": {
                    "startUrl": {
                        "title": "Start URL",
                        "type": "string",
                        "description": "Start scraping from a specific Timesjobs search URL. If provided, this overrides keyword/location/experience filters."
                    },
                    "keyword": {
                        "title": "Job Keyword",
                        "type": "string",
                        "description": "Search for jobs by keyword, such as 'Software Developer', 'Data Scientist', 'Marketing Manager'."
                    },
                    "location": {
                        "title": "Location",
                        "type": "string",
                        "description": "Filter jobs by location, e.g., 'Bengaluru', 'Mumbai', 'Delhi', 'Pune'."
                    },
                    "experience": {
                        "title": "Experience Range",
                        "type": "string",
                        "description": "Filter by experience in years. Format: 'min-max' (e.g., '0-2', '3-5', '5-10')."
                    },
                    "results_wanted": {
                        "title": "Maximum Results",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Maximum number of job listings to scrape. Pagination is calculated automatically to reach this target.",
                        "default": 20
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Optional proxy configuration. API mode runs fastest in direct mode and only uses proxy as fallback when blocking is detected.",
                        "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
