# Internshala Scraper - India Internships & Fresher Jobs (`haketa/internshala-scraper`) Actor

Scrape Internshala.com internships and fresher jobs in India. Extract role title, hiring company, stipend or salary, location including work from home, duration and listing URL by search or category URL. Export JSON, CSV, Excel for recruitment and job-market research.

- **URL**: https://apify.com/haketa/internshala-scraper.md
- **Developed by:** [Haketa](https://apify.com/haketa) (community)
- **Categories:** Jobs, Lead generation
- **Features:** Limited permissions
- **Stats:** 4 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 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.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

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

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Internshala Scraper — India Internships & Fresher Jobs with Stipend, Skills, Company & Location

[![Apify Actor](https://img.shields.io/badge/Apify-Actor-orange?logo=apify)](https://apify.com/haketa/internshala-scraper)
[![Maintenance](https://img.shields.io/badge/Maintained%3F-yes-green.svg)](https://apify.com/haketa/internshala-scraper)
[![Data Format](https://img.shields.io/badge/Data-JSON%20%7C%20CSV%20%7C%20Excel-blue)](#-output)
[![Pagination](https://img.shields.io/badge/Pagination-1%2C000%2B%20Unlocked-brightgreen)](#-pagination--scale)
[![Proxy Support](https://img.shields.io/badge/Proxy-Datacenter-success)](#-input)

> **The most complete Internshala scraper on Apify.** This **Internshala scraper** pulls live listings from **[Internshala.com](https://internshala.com) — India's largest internships and fresher-jobs platform** — returning the role title, hiring **company**, **stipend / salary**, **required skills**, location (including work-from-home), duration, posted date and listing URL. No login, no coding — just paste a search URL and **scrape Internshala** into a clean dataset.

Export to **JSON, CSV, Excel, or API**.

> Built for **recruiters**, campus-hiring and talent-sourcing teams, **EdTech & career-platform** builders, compensation analysts and **job-market researchers** who need structured Internshala data at scale.

***

### ⚡ At a glance

| Feature | Details |
| :--- | :--- |
| **Target Website** | [internshala.com](https://internshala.com) (India #1 Internships & Fresher Jobs) |
| **Listing Types** | Internships and Fresher Jobs (full-time entry-level) |
| **Pagination Limit** | **1,000+ Unlocked** (set `maxItems` to `0` or `1,000+` for full category sweeps) |
| **Key Data Fields** | Title, Company, Stipend/Salary, Location, Duration, Skills, Recency, Logo, URL |
| **Proxy Requirement** | Datacenter Proxy (Apify Proxy included by default) |
| **Authentication** | None required (public listings) |
| **Average Speed** | ~40–50 listings per second (~500 listings in ~30–40 seconds) |
| **Output Formats** | JSON, CSV, Excel (XLSX), XML, HTML Table, RSS |

***

### 🔎 Why scrape Internshala?

**Internshala** is India's dominant marketplace for **internships** and **fresher jobs**, used by millions of students and early-career professionals and tens of thousands of hiring companies. For anyone recruiting entry-level talent in India, it is the single richest source of live demand data — every listing carries a **stipend or salary** front-and-center, plus the exact **skills** the employer wants.

That data is extremely valuable, but Internshala gives you no bulk export and no public API. Collecting it by hand means scrolling endless result pages, clicking each card and copy-pasting the title, company, stipend, skills and location into a spreadsheet — then doing it again tomorrow because the listings change daily. It does not scale past a few dozen rows.

This **Internshala scraper** removes all of that friction. Paste any Internshala search or category URL and the actor walks **every result page**, parses each card into a clean structured row, de-duplicates the results and hands you a ready-to-analyze dataset in seconds. It is the **fastest path from Internshala to a usable dataset** — no scraping code, no login, no manual clicking.

**Common reasons people scrape Internshala:**

- 💼 Build a live feed of **internships and fresher jobs** for a recruitment or staffing desk.
- 💰 Benchmark **stipends and salaries** for interns and freshers by role, skill and city.
- 🧠 Analyze which **skills** employers demand most for each role or category.
- 📊 Track **hiring demand**, remote-vs-onsite mix and category trends over time.
- 🏢 Run **competitive intelligence** on which companies are hiring and at what pay.
- 🎓 Power **EdTech / career products** with structured Internshala inventory.
- 🤖 Feed clean titles, stipends, skills and locations into **ML / analytics pipelines**.

***

### ✨ What this Internshala scraper does

- ✅ **Scrapes both internships and fresher jobs** — paste an internships URL, a jobs URL, or several of each in one run.
- ✅ **Unlocked 1,000+ deep pagination** — follows `page-2`, `page-3`, … to the end of the result set, returning **hundreds to thousands** of listings per run.
- ✅ **De-duplicated rows** — each listing appears once, keyed on its Internshala ID, even when it repeats across pages.
- ✅ **Rich captured fields** per listing:
  - 💰 **Stipend / salary** — e.g. `₹ 10,000 - 15,000 /month` (internship) or `₹ 3,86,000 - 4,60,000 /year` (job)
  - 🏢 **Company** name and **logo** URL
  - 🧠 **Skills** — required skills normalized into a clean, comma-separated string for spreadsheet exports
  - 📍 **Location** — city, multiple cities, or *Work from home*
  - ⏱️ **Duration** — e.g. `3 Months` (internships)
  - 🕒 **Posted** — recency label such as `2 days ago`
  - 🧑‍💼 **Type** — internship or fresher job
  - ✅ **Actively hiring** badge and the direct listing **URL**
- ✅ **Targeting via URL** — any category, keyword, location or work-from-home filter you build on internshala.com is honored.
- ✅ **Export anywhere** — JSON, CSV, Excel, HTML or RSS, plus the full Apify **API** and integrations.
- ✅ **Fast & reliable** — lightweight HTTP scraping over Apify Proxy with automatic retries and IP rotation.

***

### 🎯 Use cases

- 🧑‍💼 **Recruitment & campus hiring** — monitor internships and fresher roles by category, location and company across India.
- 💰 **Stipend / salary benchmarking** — build compensation datasets for interns and freshers by role, skill and city.
- 🧠 **Skills-demand analysis** — rank the most-requested skills per category to shape curricula or job descriptions.
- 📊 **Job-market research** — track hiring demand, remote-vs-onsite share and category trends over time.
- 🏢 **Competitive intelligence** — see which companies are hiring for which roles and at what pay.
- 🎓 **EdTech & career products** — enrich your own platform with structured, fresh Internshala inventory.
- 📈 **Lead generation** — identify actively-hiring companies for recruitment-services or SaaS outreach.
- 🤖 **ML / analytics pipelines** — generate clean, labeled datasets of titles, stipends, skills, companies and locations.

***

### 📥 Input parameters

Build a search on **internshala.com** (internships or jobs, any category, location, keyword or work-from-home filter), copy the address-bar URL, and paste it in. Add as many URLs as you like.

| Parameter | Type | Default | Description |
| :--- | :--- | :--- | :--- |
| `startUrls` | Array | `["https://internshala.com/internships/"]` | Internshala listing URLs — internships or jobs, any category/filter. Every listing across all result pages is collected. |
| `maxItems` | Integer | `0` (unlimited) | Maximum listings to collect across all URLs. Set to `0` for unlimited. Prefill is set to `100` for rapid testing. |
| `proxyConfiguration` | Object | `{ "useApifyProxy": true }` | Proxy settings. Standard datacenter proxies are fast and cost-effective for Internshala. |

#### Example input configuration

```json
{
  "startUrls": [
    "https://internshala.com/internships/web-development-internship/",
    "https://internshala.com/internships/work-from-home-internships/",
    "https://internshala.com/jobs/"
  ],
  "maxItems": 250,
  "proxyConfiguration": { "useApifyProxy": true }
}
```

***

### 📤 Output dataset

One clean, structured record per listing.

#### Sample output item (Internship)

```json
{
  "internshipId": "3326601",
  "title": "Finance Research Analyst",
  "company": "Edify Equity",
  "employmentType": "internship",
  "stipend": "₹ 1,000 - 1,100 /month",
  "location": "Work from home",
  "duration": "1 Month",
  "skills": "Attention to Detail, Time Management, Critical thinking, Analytical Thinking, Problem Solving, English Proficiency (Spoken), Stock Trading",
  "posted": "2 days ago",
  "activelyHiring": "true",
  "logo": "https://internshala.com/static/images/search/placeholder_logo.svg",
  "url": "https://internshala.com/internship/detail/work-from-home-finance-research-analyst-internship-at-edify-equity1793363039",
  "scrapedAt": "2026-11-10T12:50:00.000Z"
}
```

#### Sample output item (Fresher Job)

```json
{
  "internshipId": "3326150",
  "title": "Sales Representative",
  "company": "Budding Mariners",
  "employmentType": "job",
  "stipend": "₹ 2,00,000 - 2,40,000 /year",
  "location": "Jaipur",
  "duration": "",
  "skills": "Leadership, Team Management, Salesforce, MS-Excel, Lead Generation, Sales Management",
  "posted": "2 days ago",
  "activelyHiring": "true",
  "logo": "https://internshala-uploads.internshala.com/logo%2F7t45hj5hhyc-82764.png.webp",
  "url": "https://internshala.com/job/detail/fresher-sales-representative-job-in-multiple-locations-at-budding-mariners1793333763",
  "scrapedAt": "2026-11-10T12:50:00.000Z"
}
```

***

#### Field reference

| Field | Type | Coverage | Description |
| :--- | :--- | :--- | :--- |
| `internshipId` | String | 🟢 High (100%) | Unique Internshala listing identifier (natural dedup key). |
| `title` | String | 🟢 High (100%) | Position or internship role title. |
| `company` | String | 🟢 High (100%) | Hiring employer or organization name. |
| `employmentType` | String | 🟢 High (100%) | `internship` or `job` (fresher role). |
| `stipend` | String | 🟢 High (100%) | Monthly stipend (internships) or annual CTC (fresher jobs) in INR (₹). |
| `location` | String | 🟢 High (100%) | City (e.g. Bangalore, Delhi), multiple cities, or *Work from home*. |
| `duration` | String | 🟡 Conditional (75%) | Program length for internships (e.g. *3 Months*, *6 Months*); empty for jobs. |
| `skills` | String | 🟢 High (90%) | Comma-separated list of required technical and soft skills. |
| `posted` | String | 🟡 Conditional (65%) | Recency badge label (e.g. *Today*, *Few hours ago*, *2 days ago*). |
| `activelyHiring` | String | 🟢 High (100%) | Boolean string (`true`/`false`) if marked as an actively hiring company. |
| `logo` | String | 🟢 High (100%) | Direct absolute URL to company logo or SVG placeholder. |
| `url` | String | 🟢 High (100%) | Canonical direct URL to the complete listing on Internshala. |
| `scrapedAt` | String | 🟢 High (100%) | ISO 8601 UTC timestamp when the record was extracted. |

***

### 📊 Comparison: Why use this Actor?

| Feature | Manual Browsing | Custom Cheerio Script | Internshala Scraper |
| :--- | :--- | :--- | :--- |
| **Pagination Limit** | Tedious manual clicks | Fails on pagination edge cases | **1,000+ Unlocked** (auto-walks pages) |
| **Dual Type Support** | Separate searches needed | Often misses job card differences | **Internships & Jobs unified** |
| **Skills Normalization** | Raw messy HTML elements | Unparsed lists | **Clean comma-separated string** |
| **Deduplication** | High duplicate risk | Memory set required | **Built-in ID deduplication** |
| **Speed** | 1 card / 15 seconds | Complex proxy management | **40–50 cards / second** |
| **Export Formats** | Manual copy-paste | Requires file writers | **Instant CSV, Excel, JSON, API** |

***

### 💻 Developer & API integrations

You can trigger this actor and retrieve structured recruitment datasets programmatically using Apify's API clients.

#### Python integration

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")

run_input = {
    "startUrls": [
        "https://internshala.com/internships/python-django-internship/",
        "https://internshala.com/internships/work-from-home-internships/"
    ],
    "maxItems": 300,
    "proxyConfiguration": { "useApifyProxy": true }
}

run = client.actor("haketa/internshala-scraper").call(run_input=run_input)

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(f"[{item['employmentType'].upper()}] {item['title']} at {item['company']} - {item['stipend']}")
```

#### Node.js integration

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });

const input = {
    startUrls: ['https://internshala.com/internships/data-science-internship/'],
    maxItems: 200,
};

const run = await client.actor('haketa/internshala-scraper').call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems();

console.log(`Scraped ${items.length} Internshala opportunities.`);
items.forEach(i => console.log(`${i.title} (${i.company}) -> Skills: ${i.skills}`));
```

#### cURL API call

```bash
curl "https://api.apify.com/v2/acts/haketa~internshala-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "startUrls": ["https://internshala.com/internships/marketing-internship/"],
    "maxItems": 100
  }'
```

***

#### Analyzing Internshala listings with Python & pandas

```python
import pandas as pd
from apify_client import ApifyClient
from collections import Counter

client = ApifyClient("YOUR_APIFY_TOKEN")
dataset_items = client.dataset("DATASET_ID").list_items().items

df = pd.DataFrame(dataset_items)

## Print high-level overview
print(f"Total opportunities: {len(df)}")
print(f"Employment Breakdown:\n{df['employmentType'].value_counts()}\n")

## Top hiring companies
print("Top 10 Hiring Companies:")
print(df['company'].value_counts().head(10))

## Most demanded skills
all_skills = []
for skills_str in df['skills'].dropna():
    all_skills.extend([s.strip() for s in skills_str.split(',') if s.strip()])

skill_counts = Counter(all_skills)
print("\nTop 15 Most Demanded Skills:")
for skill, count in skill_counts.most_common(15):
    print(f"- {skill}: {count} listings")
```

***

### 🔁 Pagination & scale

The actor paginates the way Internshala's own site does: starting from your base URL it requests `.../page-2/`, `.../page-3/` and so on, collecting roughly **40–50 listings per page** and continuing until it stops seeing new results.

- **Scale past 1,000+ items**: Enter `maxItems: 1000` or `0` (unlimited) to sweep large categories with tens of pages.
- **Deduplication guarantee**: Listings are de-duplicated on `internshipId` across all pages **and** all input URLs, ensuring 0 duplicate rows in your dataset.
- **High throughput**: Because Internshala serves server-rendered HTML cards without complex bot challenges, extraction completes at 40–50 listings per second over datacenter proxies.

***

### ⚙️ How to use Internshala Scraper

1. **Find your search URL**: Open [internshala.com](https://internshala.com) and search by role, category, city, or toggle *Work from home*.
2. **Copy URL**: Copy the full address-bar URL (e.g. `https://internshala.com/internships/content-writing-internship/`).
3. **Configure the Actor**: Paste the URL into `startUrls` on the Apify Console. Set `maxItems` to your desired count (or `0` for all).
4. **Run**: Click **Start**. The actor streams listings into the default dataset in real time.
5. **Export & Automate**: Download the result as CSV, Excel, or JSON, or schedule recurring weekly runs to monitor newly posted roles.

***

### 💡 Pro tips for best results

- 🎯 **Filter on the website first** — Build targeted queries on internshala.com (e.g. `internships-in-delhi` or `part-time-internships`) and paste the final URL to get strictly focused results.
- 🏠 **Remote internship focus** — Use the dedicated `https://internshala.com/internships/work-from-home-internships/` URL to filter out in-office opportunities.
- 🔀 **Combine multiple domains** — Include both tech, marketing, and design search URLs in `startUrls` to collect a comprehensive cross-discipline hiring dataset.
- 📈 **Stipend trend analysis** — Schedule weekly runs and track changes in median stipends offered for key skills like Python, Generative AI, or React.

***

### ⚠️ Limitations & considerations

- **Listing Recency**: Some listings remain visible on Internshala until the application deadline expires; check `posted` for recent activity.
- **Duration Availability**: Duration is specified for internships (e.g., `3 Months`), but is omitted for full-time fresher jobs.
- **Application Details**: The actor scrapes the primary public overview cards; applying for roles requires an authenticated student account on Internshala.

***

### ❓ Frequently Asked Questions

**Does this actor scrape both internships and fresher jobs?**
Yes. You can supply URLs for internships (`/internships/`) or fresher jobs (`/jobs/`), and the actor extracts both with the `employmentType` attribute distinguishing them.

**Do I need an Internshala login?**
No. All listing data is extracted from public search feeds without logging in.

**Do I need residential proxies?**
No. Standard Apify datacenter proxies work reliably and keep costs minimal.

**How fast does it extract data?**
Extremely fast — approximately 500 listings in 30–40 seconds.

**What formats can I export to?**
JSON, CSV, Excel (XLSX), XML, and RSS feeds, or direct integrations via Apify REST APIs.

**Can I track internships on a schedule?**
Yes. You can use Apify's built-in Scheduler to run this scraper daily or weekly. Since each run records a fresh `scrapedAt` timestamp and deduplicates against the current listing ID, you can easily maintain an active database of open openings.

**Are stipends and salaries guaranteed on all cards?**
Yes, Internshala requires employers to disclose the stipend (e.g. ₹ 5,000–10,000 /month) or annual package (e.g. ₹ 3,00,000 /year) on public listings.

***

### 🔗 Related scrapers

- [Naukri Scraper](https://apify.com/haketa/naukri-scraper) — India's largest job portal, jobs & salaries.
- [Seek Scraper](https://apify.com/haketa/seek-scraper) — jobs across Australia & New Zealand.
- [ZipRecruiter Scraper](https://apify.com/haketa/ziprecruiter-scraper) — US job listings with pay and company.
- [Xing Jobs Scraper](https://apify.com/haketa/xing-jobs-scraper) — DACH-region professional jobs.
- [GulfTalent Jobs Scraper](https://apify.com/haketa/gulftalent-jobs-scraper) — Middle East & Gulf job listings.

***

### 📋 Changelog

#### Version 1.2 (2026-11)

- **Unlocked 1,000+ Pagination**: Verified smooth pagination across hundreds of pages with `maxItems: 0` or large item limits.
- **Normalized Skills Output**: Converted required skills into clean comma-separated strings for seamless CSV/Excel compatibility.
- **Fast Prefill Performance**: Streamlined default 100-item prefill runs to complete in ~15–20 seconds.
- **Enhanced Schema Documentation**: Added field coverage indicators and comparison tables.

#### Version 1.1 (2026-09)

- Improved salary parsing for fresher jobs (`₹ per year` formatting).
- Added multi-city location string normalization.

#### Version 1.0 (2026-08)

- Initial release supporting internships and fresher job cards, stipends, duration, skills, and logos.

# Changelog

This Actor's version history is a separate document: https://apify.com/haketa/internshala-scraper/changelog.md

# Actor input Schema

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

Paste Internshala listing URLs. Build a search on internshala.com (internships or jobs, category, location, keyword) and copy the URL — e.g. https://internshala.com/internships/, https://internshala.com/internships/work-from-home-internships/, or https://internshala.com/jobs/. The scraper collects every listing across all result pages.

## `maxItems` (type: `integer`):

Maximum number of internships/jobs to collect across all URLs. Set to 0 for unlimited.

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

Proxy configuration. Apify Proxy is enabled by default and recommended for reliable results at scale.

## Actor input object example

```json
{
  "startUrls": [
    "https://internshala.com/internships/"
  ],
  "maxItems": 100,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `internshipId` (type: `string`):

Internshala internship/job ID

## `title` (type: `string`):

Internship/job title

## `company` (type: `string`):

Company name

## `employmentType` (type: `string`):

internship or job

## `stipend` (type: `string`):

Stipend or salary (e.g. ₹ 7,000 - 10,000 /month)

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

Location (city or Work from home)

## `duration` (type: `string`):

Duration (e.g. 3 Months)

## `skills` (type: `string`):

Required skills / tags (e.g. MS-Office, HTML, Sales)

## `posted` (type: `string`):

Posting-recency label (e.g. 2 days ago)

## `activelyHiring` (type: `string`):

Actively hiring badge

## `logo` (type: `string`):

Company logo URL

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

Internshala listing URL

## `scrapedAt` (type: `string`):

Extraction timestamp

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "startUrls": [
        "https://internshala.com/internships/"
    ],
    "maxItems": 100,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("haketa/internshala-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "startUrls": ["https://internshala.com/internships/"],
    "maxItems": 100,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("haketa/internshala-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "startUrls": [
    "https://internshala.com/internships/"
  ],
  "maxItems": 100,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call haketa/internshala-scraper --silent --output-dataset

```

## MCP server setup

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

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/zB4Fcm9deLXP48le7/builds/rHlbz5Nj07wX3EMEg/openapi.json
