# Internshala Scraper 🎓 (`shahidirfan/internshala-scrapper`) Actor

Extract live internships & entry-level jobs from India's Internshala. Get roles, companies, stipends, duration, skills & apply links. Ideal for campus recruitment, talent sourcing, salary research, market analysis & AI training. Fully structured, ETL-ready output.

- **URL**: https://apify.com/shahidirfan/internshala-scrapper.md
- **Developed by:** [Shahid Irfan](https://apify.com/shahidirfan) (community)
- **Categories:** Jobs, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.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.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

## Internshala Scraper

Collect internship and job listings from Internshala with detailed information including titles, companies, locations, stipends, skills, and descriptions. Designed for job market research, career analysis, and recruiting intelligence.

### Features

- **Dual Mode** - Scrape both internships and jobs from Internshala
- **Keyword & Location Search** - Filter listings by keyword or location
- **Automatic Pagination** - Collects results across multiple pages
- **Clean Output** - Only non-empty fields are included in results

### Use Cases

#### Job Market Research
Analyze current hiring trends across companies, locations, and roles. Understand what skills employers demand and what stipends they offer.

#### Career Planning
Build a comprehensive dataset of available internships and jobs. Compare opportunities across different cities and industries.

#### Competitive Analysis
Track what types of roles competitors are hiring for. Monitor stipend ranges and skill requirements across the industry.

---

### Input Parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `url` | String | No | - | Full Internshala URL to scrape (overrides other params) |
| `keyword` | String | No | - | Search keyword like 'software' or 'data science' |
| `location` | String | No | - | City filter like 'Mumbai' or 'Bangalore' |
| `employment_type` | Select | No | `internship` | Choose between `internship` or `job` |
| `results_wanted` | Integer | No | `20` | Maximum number of listings to collect |
| `max_pages` | Integer | No | `10` | Maximum pages to visit |
| `proxyConfiguration` | Object | No | - | Proxy settings for reliable scraping |

---

### Output Data

Each item in the dataset contains:

| Field | Type | Description |
|-------|------|-------------|
| `title` | String | Internship or job title |
| `company` | String | Company or organization name |
| `location` | String | Job or internship location |
| `stipend` | String | Stipend amount or salary range |
| `duration` | String | Internship duration |
| `skills` | Array | Required skills for the position |
| `date_posted` | String | When the listing was posted |
| `job_offer` | String | PPO or job offer details |
| `description_text` | String | Full description text |
| `company_logo` | String | URL of the company logo |
| `is_actively_hiring` | Boolean | Whether the company is actively hiring |
| `internship_id` | String | Unique listing identifier |
| `url` | String | Full URL to the listing detail page |
| `employment_type` | String | Type of listing |
| `source` | String | Data source identifier |

---

### Usage Examples

#### Basic Internship Search

Search for software internships:

```json
{
    "keyword": "software",
    "employment_type": "internship",
    "results_wanted": 30
}
````

#### Job Search with Location

Search for developer jobs in Bangalore:

```json
{
    "keyword": "developer",
    "location": "Bangalore",
    "employment_type": "job",
    "results_wanted": 50
}
```

#### Using a Specific URL

Scrape from a specific Internshala search page:

```json
{
    "url": "https://internshala.com/internships/data-science-internship-in-mumbai/",
    "results_wanted": 20
}
```

***

### Sample Output

```json
{
    "title": "Software Development Internship",
    "company": "Tech Solutions Pvt Ltd",
    "location": "Bangalore",
    "stipend": "Rs 15,000 - 25,000 /month",
    "duration": "6 Months",
    "skills": ["Python", "JavaScript", "React", "Node.js"],
    "date_posted": "3 days ago",
    "is_actively_hiring": true,
    "url": "https://internshala.com/internship/detail/example",
    "employment_type": "internship",
    "source": "internshala"
}
```

***

### Tips for Best Results

#### Choose Relevant Keywords

Use specific keywords like 'python developer' or 'digital marketing' for targeted results. Broader keywords return more listings.

#### Filter by Location

Add a city name to focus on opportunities in specific areas. Leave empty for nationwide results.

#### Start Small

Begin with 20-30 results for testing. Increase for larger data collection needs.

#### Use Proxy When Needed

For large-scale scraping, enable proxy configuration to avoid rate limits.

***

### Integrations

Connect your data with:

- **Google Sheets** - Export for analysis
- **Airtable** - Build searchable databases
- **Make** - Create automated workflows
- **Zapier** - Trigger actions

#### Export Formats

- **JSON** - For developers and APIs
- **CSV** - For spreadsheet analysis
- **Excel** - For business reporting

***

### Frequently Asked Questions

#### How many listings can I collect?

You can collect all available listings matching your search criteria. Start with smaller batches for faster results.

#### Can I scrape both internships and jobs?

Yes. Use the `employment_type` parameter to switch between 'internship' and 'job' modes.

#### What if some fields are missing?

Fields that are not available on the source are automatically excluded from the output to keep data clean.

#### Does this work with any Internshala URL?

Yes. You can provide any Internshala internships or jobs page URL and the actor will extract listings from it.

#### How fast is the scraping?

Results are retrieved quickly without a browser, making it suitable for large data collection runs.

***

### Support

For issues or feature requests, contact support through the Apify Console.

#### Resources

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

***

### Legal Notice

This actor is designed for legitimate data collection purposes. Users are responsible for ensuring compliance with Internshala's terms of service and applicable laws. Use data responsibly and respect rate limits.

# Actor input Schema

## `url` (type: `string`):

Full Internshala search URL (e.g., https://internshala.com/internships/ or https://internshala.com/jobs/). If provided, keyword/location/type are extracted from the URL.

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

Search keyword (e.g., 'software', 'data science', 'marketing').

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

City or location filter (e.g., 'Mumbai', 'Bangalore', 'Delhi'). Leave empty for all locations.

## `employment_type` (type: `string`):

Select whether to scrape internships or jobs.

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

Maximum number of listings to collect.

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

Safety cap on number of pages to visit.

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

Use Apify Proxy for reliable scraping.

## Actor input object example

```json
{
  "keyword": "software",
  "employment_type": "internship",
  "results_wanted": 20,
  "max_pages": 10,
  "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",
    "employment_type": "internship",
    "results_wanted": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("shahidirfan/internshala-scrapper").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",
    "employment_type": "internship",
    "results_wanted": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("shahidirfan/internshala-scrapper").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",
  "employment_type": "internship",
  "results_wanted": 20
}' |
apify call shahidirfan/internshala-scrapper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Internshala Scraper 🎓",
        "description": "Extract live internships & entry-level jobs from India's Internshala. Get roles, companies, stipends, duration, skills & apply links. Ideal for campus recruitment, talent sourcing, salary research, market analysis & AI training. Fully structured, ETL-ready output.",
        "version": "0.0",
        "x-build-id": "Q00PWUNuTbfxm16Y5"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/shahidirfan~internshala-scrapper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-shahidirfan-internshala-scrapper",
                "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~internshala-scrapper/runs": {
            "post": {
                "operationId": "runs-sync-shahidirfan-internshala-scrapper",
                "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~internshala-scrapper/run-sync": {
            "post": {
                "operationId": "run-sync-shahidirfan-internshala-scrapper",
                "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": {
                    "url": {
                        "title": "Internshala URL",
                        "type": "string",
                        "description": "Full Internshala search URL (e.g., https://internshala.com/internships/ or https://internshala.com/jobs/). If provided, keyword/location/type are extracted from the URL."
                    },
                    "keyword": {
                        "title": "Keyword",
                        "type": "string",
                        "description": "Search keyword (e.g., 'software', 'data science', 'marketing')."
                    },
                    "location": {
                        "title": "Location",
                        "type": "string",
                        "description": "City or location filter (e.g., 'Mumbai', 'Bangalore', 'Delhi'). Leave empty for all locations."
                    },
                    "employment_type": {
                        "title": "Type",
                        "enum": [
                            "internship",
                            "job"
                        ],
                        "type": "string",
                        "description": "Select whether to scrape internships or jobs.",
                        "default": "internship"
                    },
                    "results_wanted": {
                        "title": "Maximum results",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of listings to collect.",
                        "default": 20
                    },
                    "max_pages": {
                        "title": "Maximum pages",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Safety cap on number of pages to visit.",
                        "default": 10
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Use Apify Proxy for reliable scraping.",
                        "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
