# Workindia Jobs Details Scraper (`soft_alexist/workindia-jobs-details-scraper`) Actor

Scrape detailed job postings from WorkIndia.in with a single URL. This scraper collects salary ranges, qualifications, experience requirements, interview details, and 40+ data fields per job — perfect for job aggregators, market researchers, and HR professionals analyzing India's employment.

- **URL**: https://apify.com/soft\_alexist/workindia-jobs-details-scraper.md
- **Developed by:** [Soft Alexist](https://apify.com/soft_alexist) (community)
- **Categories:** Developer tools, Jobs, Automation
- **Stats:** 2 total users, 1 monthly users, 75.0% runs succeeded, 0 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/docs.md):

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.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/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

## WorkIndia Jobs Scraper: Extract Indian Job Listings Instantly

---

### What Is WorkIndia.in?

WorkIndia.in is one of India's largest job portals, connecting millions of job seekers with employers across diverse industries and regions. The platform hosts extensive job listings spanning technical, non-technical, entry-level, and senior positions. Each listing contains rich details on salaries, qualifications, experience levels, and application requirements. Manually extracting and organizing this data is labor-intensive — the **WorkIndia Jobs Scraper** automates this process, delivering structured, analysis-ready records from specific job detail pages.

---

### Overview

The **WorkIndia Jobs Scraper** extracts comprehensive job detail data from WorkIndia.in, transforming unstructured web listings into clean, structured datasets. It is ideal for:

- **Job aggregators** building multi-source employment databases
- **HR & recruitment professionals** conducting market salary benchmarks
- **Data analysts** studying India's job market trends by region and industry
- **Researchers** analyzing skill demands and employment patterns
- **EdTech platforms** correlating job requirements with educational offerings

The scraper excels at collecting salary ranges, qualification requirements, experience criteria, and job metadata with minimal configuration — just provide job URLs and let it work.

---

### Input Format

The scraper uses a straightforward JSON configuration:

```json
{
  "urls": [
    "https://www.workindia.in/jobs/hvac_draftsman-okhla-delhi-7870339/"
  ],
  "ignore_url_failures": true
}
````

#### Input Parameters

| Parameter | Type | Description |
|---|---|---|
| `urls` | Array (String) | Direct links to WorkIndia job detail pages. Add one or multiple URLs; each should be a specific job listing page, not a search results page. |
| `ignore_url_failures` | Boolean | If `true`, the scraper continues even if individual URLs fail to load. Useful for bulk runs to avoid interruptions. If `false`, any failed URL stops the entire job. |

**Best practices:**

- Paste full job URLs (e.g., `https://www.workindia.in/jobs/position-location-id/`)
- Use `ignore_url_failures: true` when scraping 10+ URLs to handle temporary connection issues
- Verify URLs are live before adding — expired listings return empty records

***

### Output Format

**Sample output**

```json
{
  "max_salary": 20000,
  "branch_location_pincode": "NA",
  "facts": {
    "knows_technician_advanced": 2,
    "knows_good_english": 1
  },
  "degree": 2,
  "interview_address": null,
  "job_experience": "gt_2_years",
  "profile_salary_structure": "Rs. 12000 - Rs. 20000",
  "profile_english_score": 3,
  "profile_requirement_checklist": "More Than 2 Years Experience Compulsory.  | AC-HVAC",
  "profile_qualification_required": "Tenth Pass",
  "job_timings": "10:00 AM - 6:30 PM | Monday to Saturday",
  "created_at": "2026-07-10T09:52:09Z",
  "branch_super_location_name": "",
  "views": 0,
  "skills": [
    "ac-hvac"
  ],
  "contact_detail": {
    "contact_type": "phone_no",
    "contact": "6146092114"
  },
  "employment_type": "FULL_TIME",
  "genders": "Both male and female can apply",
  "id": 7870339,
  "profile_short_description": "Speak Good English | More Than 2 Years Experience Compulsory | Site Survey, Hvac Autocad Drafting. | None",
  "search_string": "hvac draftsman,tenth pass,okhla,speak good english | more than 2 years experience compulsory | site survey, hvac autocad drafting. | none,site survey, hvac autocad drafting.,magneto cleantech pvt. ltd.,technician,good english,fluent english,10th pass,male,female,< 10th pass,experience,less_than_tenth,tenth,technician,",
  "interview_details": "11:00 AM - 4:00 PM | Monday to Saturday",
  "profile_industry_display_name": "Technician",
  "position": "experience",
  "original_created_at": "2026-07-10T09:52:09Z",
  "profile_job_title": "Hvac Draftsman",
  "min_salary": 12000,
  "branch_company_name": "Magneto Cleantech Pvt. Ltd.",
  "expiry": "2026-08-21",
  "branch_location_city_name": "delhi",
  "link": null,
  "is_expired": false,
  "job_published_on_platform": 7,
  "no_of_openings": 2,
  "branch_address": "T-4 Okhla ph-2 New Delhi",
  "branch_location_name": "Okhla",
  "experience": "experience",
  "profile_job_description": "Site Survey, Hvac Autocad Drafting. More Than 2 Years Experience Compulsory.  | AC-HVAC",
  "profile_industry_constant_name": "technician",
  "server_timestamp": 1783677132,
  "profile_html_description": "<p>Site Survey, Hvac Autocad Drafting.</p><p><strong>Salary: Rs. 12000 - Rs. 20000</strong></p><p>Qualification: Tenth Pass</p><p>Location: Okhla</p><p>Work Hours: 10:00 AM - 6:30 PM | Monday to Saturday</p><p>Job Category: Technician</p><p>Good English</p><p>More Than 2 Years Experience Compulsory.  | AC-HVAC</p>",
  "disable_job_detail_click": 0,
  "related_jobs": [],
  "seo_qa_content": null
}
```

Each job listing generates a comprehensive record with 40+ fields organized by category:

#### Job Core Information

| Field | Meaning |
|---|---|
| `ID` | Unique WorkIndia identifier for the job posting |
| `Position` | Job title or designation (e.g., "HVAC Draftsman") |
| `Profile Job Title` | Display-friendly job title variant |
| `Link` | Direct URL to the job listing |
| `No Of Openings` | Number of open positions available |
| `Employment Type` | Contract type (e.g., full-time, contract, temporary) |

#### Salary & Compensation

| Field | Meaning |
|---|---|
| `Min Salary` | Minimum annual/monthly salary offered (in INR) |
| `Max Salary` | Maximum annual/monthly salary offered (in INR) |
| `Profile Salary Structure` | Breakdown of salary components (e.g., base, allowances) |

#### Candidate Requirements

| Field | Meaning |
|---|---|
| `Degree` | Required educational qualification (e.g., Bachelor's, Diploma) |
| `Job Experience` | Years of experience required (e.g., "2-5 years") |
| `Experience` | Experience requirement variant or detailed specification |
| `Skills` | Required technical and soft skills as comma-separated list |
| `Genders` | Gender preference/diversity note (e.g., "All", "Female Only") |
| `Profile Qualification Required` | Detailed qualification checklist |
| `Profile English Score` | Minimum English proficiency requirement (if applicable) |
| `Profile Requirement Checklist` | Structured list of must-have candidate attributes |

#### Job Details & Description

| Field | Meaning |
|---|---|
| `Profile Job Description` | Plain-text job responsibilities and scope |
| `Profile HTML Description` | HTML-formatted detailed job description |
| `Profile Short Description` | Brief one-line job summary |
| `Facts` | Key job facts or highlights (e.g., "Remote eligible", "Fast hiring") |

#### Location & Work Environment

| Field | Meaning |
|---|---|
| `Branch Location Name` | Primary job location (e.g., "Okhla, Delhi") |
| `Branch Location City Name` | City name extracted from location |
| `Branch Location Pincode` | Postal code of the job location |
| `Branch Super Location Name` | Broader region/state (e.g., "Delhi NCR") |
| `Branch Address` | Full office address for the position |
| `Interview Address` | Address where interviews will be conducted |
| `Job Timings` | Work shift/timings (e.g., "9 AM - 6 PM") |

#### Organization Info

| Field | Meaning |
|---|---|
| `Branch Company Name` | Employer/company name |
| `Profile Industry Display Name` | Industry category (e.g., "Manufacturing", "IT Services") |
| `Profile Industry Constant Name` | Standardized industry identifier |
| `Contact Detail` | Recruiter or HR contact information |

#### Interview & Application

| Field | Meaning |
|---|---|
| `Interview Details` | Instructions, process, or rounds information |
| `Disable Job Detail Click` | Whether job details are restricted from further clicks |

#### Administrative & Metadata

| Field | Meaning |
|---|---|
| `Created At` | Timestamp when the listing was created |
| `Original Created At` | Original creation timestamp (if reposted) |
| `Job Published On Platform` | Date the job was published to live listings |
| `Expiry` | Listing expiration date |
| `Is Expired` | Boolean flag indicating if the job is expired |
| `Views` | Number of times the listing has been viewed |
| `Server Timestamp` | Server-side processing timestamp |
| `Search String` | Keywords associated with the job listing |
| `Related Jobs` | URLs or IDs of similar/related positions |
| `SEO QA Content` | SEO-optimized content snippets for search visibility |

***

### How to Use

1. **Locate job URLs** — Browse WorkIndia.in and open specific job listing pages. Copy the full URL.
2. **Prepare input** — Paste URLs into the `urls` array. You can add 1 or 100+ URLs.
3. **Set error handling** — Use `ignore_url_failures: true` for production runs.
4. **Execute** — Start the scraper and monitor progress.
5. **Export data** — Download results as JSON, CSV, or Excel for analysis.

**Troubleshooting:**

- **No data returned:** Verify the URL points to a live job detail page, not a search results page
- **Partial fields:** Some listings may not populate all fields (e.g., salary may be hidden)
- **Expired jobs:** Expired listings still return data but flag `Is Expired: true`

***

### Use Cases & Applications

- **Salary research:** Analyze min/max compensation by role, location, and experience level
- **Skill gap analysis:** Identify in-demand skills across industries
- **Competitive intelligence:** Monitor competitor hiring volumes and salary benchmarks
- **Automated aggregation:** Feed data into your own job board or career portal
- **Academic research:** Study India's employment market dynamics and industry trends

The WorkIndia Jobs Scraper eliminates manual copy-paste work, enabling data-driven decisions in recruitment, market research, and business intelligence.

***

### Conclusion

The **WorkIndia Jobs Scraper** is a powerful, easy-to-use tool for anyone needing structured job data from India's largest job portal. With minimal configuration and rich output across 40+ fields, it transforms time-consuming data collection into an automated, reliable process. Start scraping today and unlock actionable insights from India's dynamic job market.

# Actor input Schema

## `urls` (type: `array`):

Add the URLs of the Specific jobs urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.

## `ignore_url_failures` (type: `boolean`):

If true, the scraper will continue running even if some URLs fail to be scraped.

## Actor input object example

```json
{
  "urls": [
    "https://www.workindia.in/jobs/hvac_draftsman-okhla-delhi-7870339/"
  ],
  "ignore_url_failures": true
}
```

# 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 = {
    "urls": [
        "https://www.workindia.in/jobs/hvac_draftsman-okhla-delhi-7870339/"
    ],
    "ignore_url_failures": true
};

// Run the Actor and wait for it to finish
const run = await client.actor("soft_alexist/workindia-jobs-details-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 = {
    "urls": ["https://www.workindia.in/jobs/hvac_draftsman-okhla-delhi-7870339/"],
    "ignore_url_failures": True,
}

# Run the Actor and wait for it to finish
run = client.actor("soft_alexist/workindia-jobs-details-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 '{
  "urls": [
    "https://www.workindia.in/jobs/hvac_draftsman-okhla-delhi-7870339/"
  ],
  "ignore_url_failures": true
}' |
apify call soft_alexist/workindia-jobs-details-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Workindia Jobs Details Scraper",
        "description": "Scrape detailed job postings from WorkIndia.in with a single URL. This scraper collects salary ranges, qualifications, experience requirements, interview details, and 40+ data fields per job — perfect for job aggregators, market researchers, and HR professionals analyzing India's employment.",
        "version": "0.0",
        "x-build-id": "kWOHf6zxxPknJoUbn"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/soft_alexist~workindia-jobs-details-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-soft_alexist-workindia-jobs-details-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/soft_alexist~workindia-jobs-details-scraper/runs": {
            "post": {
                "operationId": "runs-sync-soft_alexist-workindia-jobs-details-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/soft_alexist~workindia-jobs-details-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-soft_alexist-workindia-jobs-details-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": {
                    "urls": {
                        "title": "URLs of the Specific jobs urls to scrape",
                        "type": "array",
                        "description": "Add the URLs of the Specific jobs urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "ignore_url_failures": {
                        "title": "Continue running even if some URLs fail to be scraped",
                        "type": "boolean",
                        "description": "If true, the scraper will continue running even if some URLs fail to be scraped."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
