{
  "openapi": "3.0.1",
  "info": {
    "title": "Instagram Hashtag Scraper & Instagram Reels Search, No Login",
    "description": "Scrape Instagram hashtags and keywords: an Instagram keyword search and hashtag scraper for the top reels of any hashtag or keyword. Per reel the caption, exact time, plays, likes, comments, owner and full name, music, location, tags and video URLs; per hashtag its post count and related keywords.",
    "version": "0.1",
    "x-build-id": "PWeChht9cVeLSmcRF"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/hyperbach~instagram-hashtag-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-hyperbach-instagram-hashtag-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/hyperbach~instagram-hashtag-scraper/runs": {
      "post": {
        "operationId": "runs-sync-hyperbach-instagram-hashtag-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/hyperbach~instagram-hashtag-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-hyperbach-instagram-hashtag-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",
        "properties": {
          "hashtags": {
            "title": "Hashtags",
            "maxItems": 1000,
            "type": "array",
            "description": "Hashtags, one per line, with or without `#` (`natgeo`, `#natgeo`), or a hashtag link (`https://www.instagram.com/explore/tags/natgeo/`, `instagram.com/popular/natgeo/`). Each gives Instagram's ranked reels for it, top first, up to `maxReelsPerInput`, and one free search row with the hashtag's post count and related keywords. Upper case is read as lower case (Instagram's list is case-sensitive); accents and other scripts are kept (`café` and `cafe` are two terms, `ラーメン` works). A value that names nothing is a free row that says why.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "keywords": {
            "title": "Keywords",
            "maxItems": 1000,
            "type": "array",
            "description": "Search keywords or phrases, one per line (`skincare routine`, `street food bangkok`), or a search-results link (`instagram.com/explore/search/keyword/?q=…`). Each gives the ranked reels Instagram shows for the search, the same as a hashtag. A keyword and a hashtag with one spelling are read once.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "maxReelsPerInput": {
            "title": "Max reels per hashtag or keyword",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "How many of each list's top reels, in Instagram's order. A ranked list holds about 50–70 reels (natgeo 59, nature 53 on our runs); 100 = every reel to the list's end. A reel left out by a filter or already delivered under another input does not count. The search row says how many the list held and why the walk stopped.",
            "default": 20
          },
          "includeDetails": {
            "title": "Reel details (owner name, music, location, tags, comments)",
            "type": "boolean",
            "description": "Read each reel's own record: the owner's full name and verified flag, the music title and artist, the location with coordinates, the tagged accounts, the coauthors, the latest comments (up to 15), Instagram's alt text and topic tags, the edited flag. On by default. Off = a faster, lighter run with the lists' fields only (plays, time, likes, comments, caption, owner username, media URLs, duration, the sound's kind).",
            "default": true
          },
          "includeViews": {
            "title": "View counter",
            "type": "boolean",
            "description": "Add `views`, the counter Instagram's embed page shows (a quarter to a half of the plays; the plays are on every row anyway). One more call a reel: a run takes longer.",
            "default": false
          },
          "includeOwnerFollowers": {
            "title": "Owners' follower counts",
            "type": "boolean",
            "description": "Add each reel owner's follower count (`owner_followers`) and the engagement rate per follower (`engagement_rate`). One call per distinct owner.",
            "default": false
          },
          "newerThan": {
            "title": "Posted on or after",
            "pattern": "^(|[0-9]{4}-[0-9]{2}-[0-9]{2}([T ][0-9:.]+(Z|[+-][0-9]{2}:?[0-9]{2})?)?|[0-9]{1,4} *(hour|hours|day|days|week|weeks|month|months|year|years)?)$",
            "type": "string",
            "description": "Only reels published on or after this date: `2026-09-01`, a date and time (`2026-09-01T12:00:00Z`), or a span back from now in lower case (`7 days`, `12 hours`, `2 weeks`, `3 months`). The whole ranked list is read and the reels outside the window are left out, free.",
            "default": ""
          },
          "olderThan": {
            "title": "Posted on or before",
            "pattern": "^(|[0-9]{4}-[0-9]{2}-[0-9]{2}([T ][0-9:.]+(Z|[+-][0-9]{2}:?[0-9]{2})?)?|[0-9]{1,4} *(hour|hours|day|days|week|weeks|month|months|year|years)?)$",
            "type": "string",
            "description": "Only reels published on or before this date (a date includes its whole day), in the same forms as `newerThan`.",
            "default": ""
          },
          "minPlays": {
            "title": "Min plays",
            "minimum": 0,
            "maximum": 1000000000,
            "type": "integer",
            "description": "Keep a reel only with at least this many plays (a reel of the list's tail, which Instagram serves without plays, is left out when this is above 0). Free when it leaves a reel out. 0 = every reel.",
            "default": 0
          },
          "minLikes": {
            "title": "Min likes",
            "minimum": 0,
            "maximum": 1000000000,
            "type": "integer",
            "description": "Keep a reel only with at least this many likes (a reel whose owner hides the likes is left out when this is above 0). Free when it leaves a reel out. 0 = every reel.",
            "default": 0
          },
          "minComments": {
            "title": "Min comments",
            "minimum": 0,
            "maximum": 1000000000,
            "type": "integer",
            "description": "Keep a reel only with at least this many comments. Free when it leaves a reel out. 0 = every reel.",
            "default": 0
          },
          "relatedKeywordsCount": {
            "title": "Related keywords listed",
            "minimum": 0,
            "maximum": 48,
            "type": "integer",
            "description": "How many of Instagram's related keywords the search row lists (`related_keywords`); Instagram serves up to 48.",
            "default": 10
          },
          "relatedKeywordsDepth": {
            "title": "Walk the related keywords too",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "Also read the ranked reels of each input's first N related keywords (each a list of its own, with `input_type` related and `related_to` naming its input). A reel already delivered under another input is not delivered twice. 0 = the inputs only.",
            "default": 0
          },
          "onlyNewReels": {
            "title": "Only new reels (memory between runs)",
            "type": "boolean",
            "description": "Deliver only the reels an earlier run with the same memory never delivered: a ranked list changes from day to day, so a scheduled task gets the reels that entered the list since. A reel the memory knows is skipped free.",
            "default": false
          },
          "stateStoreName": {
            "title": "Memory name",
            "pattern": "^([a-zA-Z0-9][a-zA-Z0-9._-]{0,63})?$",
            "type": "string",
            "description": "The name of the memory `onlyNewReels` keeps (letters, digits, '.', '_', '-'); empty = a name derived from the inputs.",
            "default": ""
          },
          "maxItems": {
            "title": "Max reels (whole run)",
            "minimum": 0,
            "maximum": 10000000,
            "type": "integer",
            "description": "The most charged rows (reels) of the whole run, over every hashtag, keyword and related keyword; 0 = no cap beyond `maxReelsPerInput` and your charge limit. The inputs are read side by side, so a cap under what they need is shared as their reels arrive, not in input order: each input still gets its top-ranked reels, and its search row says RUN_CAP.",
            "default": 0
          },
          "proxyUrl": {
            "title": "Proxy URL",
            "type": "string",
            "description": "Your own proxy (scheme://user:pass@host:port) for every call instead of ours. Leave empty: the Actor brings its own connections at no cost to you."
          }
        }
      },
      "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}