{
  "openapi": "3.0.1",
  "info": {
    "title": "NCS (India) Vocational Training Courses Scraper",
    "description": "Scrape India's National Career Service (NCS) / Skill India Digital Hub vocational and skilling course catalog. Search by keyword, sector, language, occupation, and program sponsor. Get full course descriptions, duration, price, certification, and enrollment stats.",
    "version": "1.0",
    "x-build-id": "P1fif4zVhofl2IDFA"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/crawlerbros~ncs-vocational-training-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-crawlerbros-ncs-vocational-training-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/crawlerbros~ncs-vocational-training-scraper/runs": {
      "post": {
        "operationId": "runs-sync-crawlerbros-ncs-vocational-training-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/crawlerbros~ncs-vocational-training-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-crawlerbros-ncs-vocational-training-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",
        "required": [
          "mode"
        ],
        "properties": {
          "mode": {
            "title": "Mode",
            "enum": [
              "search",
              "byIds"
            ],
            "type": "string",
            "description": "What to fetch.",
            "default": "search"
          },
          "keyword": {
            "title": "Keyword",
            "type": "string",
            "description": "Free-text search against course title and description (mode=search). The upstream API matches on exact substrings, not tokenized words — e.g. `cyber` matches \"Cybersecurity\", but `cyber security` (with a space) will not.",
            "default": ""
          },
          "courseIds": {
            "title": "Course IDs (mode=byIds)",
            "type": "array",
            "description": "Exact Skill India Digital Hub course UUIDs to look up.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "sectors": {
            "title": "Sectors",
            "type": "array",
            "description": "Filter by one or more industry sectors (matches any).",
            "items": {
              "type": "string",
              "enum": [
                "1",
                "2",
                "3",
                "4",
                "5",
                "6",
                "7",
                "9",
                "10",
                "11",
                "12",
                "13",
                "14",
                "15",
                "16",
                "19",
                "20",
                "21",
                "22",
                "23",
                "24",
                "26",
                "27",
                "29",
                "30",
                "31",
                "32",
                "33",
                "34",
                "35",
                "36",
                "37",
                "38",
                "39",
                "40",
                "41",
                "43",
                "44",
                "45",
                "84",
                "91",
                "92",
                "93",
                "100",
                "150",
                "250",
                "300",
                "350",
                "400",
                "450",
                "500",
                "550",
                "600",
                "700",
                "800",
                "1100",
                "1300",
                "1400",
                "1450"
              ],
              "enumTitles": [
                "Automotive",
                "Apparel, Madeups & Home Furnishing",
                "Aerospace and Aviation",
                "Beauty & Wellness",
                "Banking, Financial Services & Insurance (BFSI)",
                "Capital Goods",
                "Paints and Coatings",
                "Construction",
                "Home Management and Care Giving",
                "Electronics",
                "Food Industry Capacity and Skill Initiative",
                "Agriculture",
                "Furniture and Fittings",
                "Gem & Jewellery",
                "Green Jobs",
                "Infrastructure Equipment",
                "Indian Iron & Steel",
                "Leather",
                "Logistics",
                "Management & Entrepreneurship and Professional",
                "Media & Entertainment",
                "Hydrocarbon",
                "Water Management & Plumbing",
                "Life Sciences",
                "Power",
                "Rubber",
                "Retailers Association's",
                "Sports, Physical Education, Fitness & Leisure",
                "Strategic Manufacturing",
                "Healthcare",
                "Telecom",
                "Textile",
                "Tourism and Hospitality",
                "IT-ITeS",
                "Other",
                "Employability Enhancer",
                "Handicrafts & Carpets",
                "People with Disability",
                "Management - Security",
                "Information Technology Sector",
                "Productivity",
                "Personal Development",
                "Diversity & Inclusion",
                "Fabrication",
                "Production and Manufacturing",
                "Marine",
                "Bakery & Confectionary",
                "Batik and Tye & Dye",
                "Beauty Culture & Healthcare",
                "Bee Keeping",
                "Bio-Farming",
                "Flower Arrangement",
                "Fruit & Vegetable Processing and Preservation",
                "Jute Craft",
                "Mushroom Cultivation and Marketing",
                "Education",
                "Professionals",
                "Tobacco Industry",
                "Tutors and Other Teacher Aides"
              ]
            },
            "default": []
          },
          "languages": {
            "title": "Languages",
            "type": "array",
            "description": "Filter by one or more course languages (matches any).",
            "items": {
              "type": "string",
              "enum": [
                "English",
                "Hindi",
                "Bengali",
                "Gujarati",
                "Kannada",
                "Malayalam",
                "Tamil",
                "Telugu",
                "Urdu"
              ],
              "enumTitles": [
                "English",
                "Hindi",
                "Bengali",
                "Gujarati",
                "Kannada",
                "Malayalam",
                "Tamil",
                "Telugu",
                "Urdu"
              ]
            },
            "default": []
          },
          "occupation": {
            "title": "Occupation contains",
            "type": "string",
            "description": "Case-insensitive substring match against the course's occupation tags (e.g. `Cyber Security`, `Data Analytics`, `Cooking`).",
            "default": ""
          },
          "domain": {
            "title": "Domain contains",
            "type": "string",
            "description": "Case-insensitive substring match against the course's domain tags (e.g. `Plumbing Contractor`, `Plastic Manufacturing`, `Future Skills`) — a finer-grained taxonomy than Sector, with 270+ upstream values. Applied client-side; the upstream API silently ignores a server-side `domain` filter.",
            "default": ""
          },
          "programBy": {
            "title": "Program sponsor",
            "enum": [
              "",
              "Govt. of India Program",
              "State Govt. Program",
              "NSDC Academy",
              "Skill India CSR",
              "Skill India International",
              "Higher Education"
            ],
            "type": "string",
            "description": "Filter by who runs the program.",
            "default": ""
          },
          "learningPartnerType": {
            "title": "Learning partner type",
            "enum": [
              "",
              "LP01",
              "LP02",
              "LP03",
              "IDP_SAML"
            ],
            "type": "string",
            "description": "Filter by the category of learning partner delivering the course.",
            "default": ""
          },
          "courseCategory": {
            "title": "Course category",
            "enum": [
              "",
              "Skill Course",
              "Learning Path",
              "Specialization",
              "Professional Certification",
              "Diploma",
              "Degree",
              "K-12 course"
            ],
            "type": "string",
            "description": "Filter by learning-product type, e.g. a short Skill Course vs. a multi-term Degree.",
            "default": ""
          },
          "nsqfLevel": {
            "title": "NSQF level",
            "enum": [
              "",
              "0",
              "1",
              "2",
              "3",
              "4",
              "5",
              "6",
              "7",
              "8",
              "9",
              "10"
            ],
            "type": "string",
            "description": "Filter by National Skills Qualification Framework level (0 = not applicable/unrated, 1-10 = increasing skill/qualification depth).",
            "default": ""
          },
          "freeOnly": {
            "title": "Free courses only",
            "type": "boolean",
            "description": "Only keep courses with price = 0.",
            "default": false
          },
          "minPrice": {
            "title": "Min price (INR)",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "Drop courses cheaper than this (in INR).",
            "default": 0
          },
          "maxPrice": {
            "title": "Max price (INR)",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "Drop courses more expensive than this (in INR)."
          },
          "includeCourseImage": {
            "title": "Rehost course image",
            "type": "boolean",
            "description": "Fetch each course's cover image and rehost it to a stable Apify-hosted URL (the upstream image URL is a short-lived signed link that expires within minutes). Slower (1 extra request per record).",
            "default": false
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Hard cap on emitted records.",
            "default": 50
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}