{
  "openapi": "3.0.1",
  "info": {
    "title": "🎓 Internshala Scrapper",
    "description": "Internshala Scraper extracts public internship and job listings, including titles, companies, locations, salaries, skills, durations, work types, descriptions, and application details. Build structured datasets for recruitment, job market research, and opportunity discovery.",
    "version": "1.0",
    "x-build-id": "4dMZUCFhxx0oySVBw"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scraper-engine~internshala-scrapper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scraper-engine-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/scraper-engine~internshala-scrapper/runs": {
      "post": {
        "operationId": "runs-sync-scraper-engine-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/scraper-engine~internshala-scrapper/run-sync": {
      "post": {
        "operationId": "run-sync-scraper-engine-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": {
          "urls": {
            "title": "🔗 Internshala Search URLs (optional bulk input)",
            "type": "array",
            "description": "➕ Paste one or more Internshala <b>internship/job search result</b> URLs, one per line — e.g. <code>https://internshala.com/internships/work-from-home-software-development-internships</code>. Each URL is scraped as its own independent search (great for running several categories/cities in one go). 💡 <b>Leave this empty</b> to build a single search from the filter fields below instead — when URLs are provided here, the filter fields are ignored.",
            "items": {
              "type": "string"
            }
          },
          "jobCategory": {
            "title": "💼 Job Category",
            "type": "string",
            "description": "The internship/job category to search for, e.g. <code>Software Development</code>, <code>Marketing</code>, <code>Data Science</code>. Matched against Internshala's own category list — an unrecognized value runs without a category filter instead of guessing. Used only when the URL list above is empty.",
            "default": "Software Development"
          },
          "workFromHome": {
            "title": "🏠 Work From Home Only",
            "type": "boolean",
            "description": "✅ Only show remote / work-from-home internships. When ON, the Location field below is ignored (matches Internshala's own site behavior). Used only when the URL list above is empty.",
            "default": true
          },
          "location": {
            "title": "📍 Location (city)",
            "type": "string",
            "description": "City to search in, e.g. <code>Delhi</code>, <code>Mumbai</code>, <code>Bangalore</code>. Only applies when 🏠 Work From Home Only is OFF. Used only when the URL list above is empty.",
            "default": "Delhi"
          },
          "partTime": {
            "title": "⏰ Part-Time Only",
            "type": "boolean",
            "description": "✅ Only keep listings explicitly badged \"Part time\" by Internshala. Used only when the URL list above is empty.",
            "default": false
          },
          "minStipend": {
            "title": "💰 Minimum Stipend (₹/month)",
            "type": "string",
            "description": "Minimum monthly stipend to filter for, e.g. <code>5000</code>. Snapped to the nearest value Internshala's own filter actually supports. Leave empty for no minimum. Used only when the URL list above is empty.",
            "default": ""
          },
          "maxResults": {
            "title": "🎯 Maximum Results (per search)",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Stop each search after collecting this many internships. Applies independently to every URL in bulk mode, or to the one search built from the filters above.",
            "default": 30
          },
          "pagesToScrape": {
            "title": "📄 Maximum Pages (per search)",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Stop each search after this many result pages, even if 🎯 Maximum Results hasn't been reached yet.",
            "default": 20
          },
          "proxyConfiguration": {
            "title": "🛡️ Proxy Configuration",
            "type": "object",
            "description": "⚡ <b>Smart auto-escalation, on by default</b>: 1️⃣ <b>No proxy</b> is tried first for every request. 2️⃣ Only if Internshala rejects/blocks that (HTTP 403/429/5xx) does the Actor escalate to a <b>Datacenter</b> proxy. 3️⃣ If the datacenter tier is <i>also</i> blocked, it escalates to a <b>Residential</b> proxy and retries there. Once escalated, the run <b>sticks</b> with that tier for every remaining request — no flip-flopping. Every escalation is logged clearly. Leave the default as-is to let the Actor manage this for you."
          },
          "maxRetries": {
            "title": "🔁 Max Retries (per request)",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Attempts per page fetch, across proxy-tier escalation (also doubles as the retry budget once escalated to the residential tier).",
            "default": 3
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}