Skip to main content
input_schema.json is the “face” of a script. By modifying this file, you can control what parameters users need to fill in before running the script (such as URLs, keywords, dates, etc.), and how these inputs are presented (dropdowns, checkboxes, text fields, and more).

1. Overall Structure

A standard configuration file consists of the following three parts:
  1. description: Introduces the purpose and usage of the script to users.
  2. b (Concurrency Key Field): Determines how the script splits tasks.
  3. properties: The list of configurable parameters.

💡 Example

{
  "description": "Our Instagram post comment scraper extracts commenter username, URL, comment date, content, like/reply counts, replies, hashtags, comment ID, post ID, original poster and post URL. Results are downloadable in structured formats.",
  "b": "post_url",
  "properties": [
    {
      "title": "Post URL",
      "name": "post_url",
      "type": "array",
      "editor": "requestList",
      "description": "This parameter is used to specify the Instagram post URL to be fetched.",
      "default": [
        {
        	"url": "https://www.instagram.com/cats_of_instagram/reel/C4GLo_eLO2e/"
   		 },
    	{
        	"url": "https://www.instagram.com/catsofinstagram/p/CesFC7JLyFl/?img_index=1"
   		 }
      ],
      "required": true
    }
  ]
}
Image

2. Root Field Descriptions

Field NameRequiredDescription
descriptionNoTool description. Displayed at the top of the page. Used to explain the script’s purpose, usage notes, and limitations.
bYesTask split key. Must match the name of one property. The script will run concurrently based on this field (e.g., split tasks by number of URLs).
propertiesYesParameter configuration list. Each element represents an input field or selector on the UI.

3. Parameter Properties (Inside properties)

Each parameter item can include the following attributes:
  • title: Label shown on the UI (e.g., “Search Keywords”).
  • name: Internal identifier, must be unique and must not contain Chinese characters.
  • type: Data type:
    • string: Text
    • integer: Number
    • boolean: Boolean (true / false)
    • array: List / multiple values
    • object: Object
  • editor: Determines how the input is rendered in the UI (see below).
  • description: Helper text shown below the input field.
  • default: Default value shown initially.
  • required: If set to true, the script cannot run unless this field is filled.

4. Editor Type Guide

Choose different editors to optimize user experience.

4.1 Basic Text & Numbers

EditorUI DisplayUse Case
inputSingle-line text fieldShort text, keywords, usernames, etc.
textareaMulti-line text fieldLong-form text input.
numberNumeric inputOnly allows numeric values with range control.

4.2 Selectors

EditorUI DisplayDescription
selectDropdownIdeal for many predefined options.
radioRadio buttonsSingle selection from multiple options.
checkboxCheckboxesMultiple selections allowed.
switchToggle switchUsed for on/off states.

4.3 Date & Special Lists

EditorUI DisplayDescription
datepickerDate pickerSelect or input dates.
requestListURL listBatch input and management of target URLs.
requestListSourceURL list with parametersExtends requestList with custom parameters.
stringListString listBatch input for keywords or similar data.

5. Common Component Examples

5.1 Single-line Input

{
  "title": "Location (use only one location per run)",
  "name": "location",
  "type": "string",
  "editor": "input",
  "default": "New York, USA"
}
Image

5.2 Multi-line Textarea

{
  "title": "Filter reviews by keywords",
  "name": "keywords",
  "type": "string",
  "editor": "textarea"
}
Image

5.3 Number Input

{
  "title": "Number of places to extract (per each search term or URL)",
  "name": "maxPlacesPerSearch",
  "type": "integer",
  "editor": "number",
  "default": 4
}
Image

5.4 Dropdown Select

{
  "title": "Language",
  "name": "language",
  "type": "string",
  "editor": "select",
  "options": [
    { "label": "English", "value": "en" },
    { "label": "Afrikaans", "value": "af" },
    { "label": "azərbaycan", "value": "az" }
  ],
  "default": "en"
}
Image

5.5 Radio Buttons

{
  "title": "Category",
  "name": "radio",
  "type": "integer",
  "editor": "radio",
  "options": [
    { "label": "hotel", "value": 1 },
    { "label": "restaurant", "value": 2 }
  ],
  "default": 1
}
Image

5.6 Checkboxes

{
  "title": "Data Sections to Scrape",
  "name": "data_sections",
  "type": "array",
  "editor": "checkbox",
  "options": [
    { "label": "Reviews", "value": "reviews" },
    { "label": "Address", "value": "address" },
    { "label": "Phone Number", "value": "phone_number" }
  ],
  "default": ["reviews", "address"]
}
Image

5.7 Date Picker

{
  "title": "Extract posts that are newer than",
  "name": "date",
  "type": "string",
  "editor": "datepicker",
  "format": "DD/MM/YYYY",
  "valueFormat": "DD/MM/YYYY"
}
Image
{
  "title": "Extract posts that are newer than",
  "name": "date",
  "type": "string",
  "editor": "datepicker",
  "dateType": "absoluteOrRelative"
}
Image Image

5.8 Switch

{
  "title": "⏩ Skip closed places",
  "name": "skipClosed",
  "type": "boolean",
  "editor": "switch"
}
Image

5.9 URL List (requestList)

{
  "name": "startURLs",
  "type": "array",
  "title": "Start URLs",
  "editor": "requestList",
  "required": true,
  "description": "The URLs of the website to scrape"
}
Image

5.10 URL List Source (requestListSource)

{
    "title": "startURLs",
    "name": "url",
    "type": "array",
    "editor": "requestListSource",
    "default": [
        {
            "url": "https://www.instagram.com/espn",
            "end_date": "",
            "start_date": "",
            "num_of_posts": "10",
            "posts_to_not_include": ""
        }
    ],
    "param_list": [
        {
            "param": "url",
            "title": "URL",
            "editor": "input",
            "type": "string",
            "required": true,
            "description": "This parameter is used to specify the Instagram access URL to be fetched."
        },
        {
            "param": "num_of_posts",
            "title": "Maximum Number of Reels",
            "type": "integer",
            "editor": "number",
            "description": "This parameter is used to specify the maximum number of Reels to fetch."
        },
        {
            "param": "start_date",
            "title": "Start Date",
            "type": "string",
            "editor": "datepicker",
            "format": "MM-DD-YYYY",
            "valueFormat": "MM-DD-YYYY",
            "description": "This parameter is used to specify the start time of the post, format: mm-dd-yyyy, and should be earlier than the \"end_date\"."
        },
        {
            "param": "end_date",
            "title": "End Date",
            "type": "string",
            "editor": "datepicker",
            "format": "MM-DD-YYYY",
            "valueFormat": "MM-DD-YYYY",
            "description": "This parameter is used to specify the end time of the post, format: mm-dd-yyyy, and should be later than the \"start_date\"."
        }
    ],
    "description": "The URLs of the website to scrape"
}
Image

5.11 String List

{
  "title": "Search term(s)",
  "name": "searchTerms",
  "type": "array",
  "editor": "stringList",
  "default": [
    { "string": "restaurant" },
    { "string": "school" }
  ]
}
24832302876 211201030865 Dfd4d22f2d116a1917d333058ccdc33d

💡 Configuration Tips

  1. Write clear descriptions A well-written description improves discoverability and usability.
  2. Provide sensible defaults Good defaults allow users to run the script with minimal effort.
  3. Enforce required fields For critical parameters (e.g., login cookies or start URLs), always set "required": true.