{
  "openapi": "3.0.1",
  "info": {
    "title": "Instagram Hashtag Scraper (Posts & Reels)",
    "description": "Scrape public Instagram posts and reels from hashtag pages, with or without #. Caption, hashtags, views, owner, date and image or video links, plus optional full details and comments. New-only mode for schedules. No login, no cookies. $0.30 per 1,000 posts.",
    "version": "0.1",
    "x-build-id": "NcBFXu9lt4gsifVqN"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/locaihost~instagram-hashtag/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-locaihost-instagram-hashtag",
        "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/locaihost~instagram-hashtag/runs": {
      "post": {
        "operationId": "runs-sync-locaihost-instagram-hashtag",
        "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/locaihost~instagram-hashtag/run-sync": {
      "post": {
        "operationId": "run-sync-locaihost-instagram-hashtag",
        "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",
            "type": "array",
            "description": "Hashtags, with or without # (streetfood, #streetfood) or hashtag links (/explore/tags/...). Each returns the public posts and reels Instagram shows a signed-out visitor on that hashtag's page.",
            "items": {
              "type": "string"
            }
          },
          "maxPostsPerHashtag": {
            "title": "Posts per hashtag",
            "minimum": 1,
            "maximum": 2000,
            "type": "integer",
            "description": "Most posts to return for each hashtag. Instagram decides how far each public hashtag page goes; when it ends sooner, the run says so.",
            "default": 24
          },
          "postDetails": {
            "title": "Full post details ($)",
            "type": "boolean",
            "description": "Open every post on its own page for the exact time, likes, comment count, every photo and video in it, tagged accounts, location and audio. These rows are charged as detailed posts instead of posts. Off: posts carry caption, hashtags, views, owner, date and video link.",
            "default": false
          },
          "includeComments": {
            "title": "Include comments ($)",
            "type": "boolean",
            "description": "Also return the public comments on each post (text, date, likes, reply count), charged per comment. Instagram shows signed-out visitors only the newest 7 to 12 comments of a post, so that is the most each post gives.",
            "default": false
          },
          "maxCommentsPerPost": {
            "title": "Comments per post",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Most comments to return for each post, newest first.",
            "default": 20
          },
          "onlyNew": {
            "title": "Only new posts",
            "type": "boolean",
            "description": "Of the latest posts on each hashtag page (Posts per hashtag), return only those this input hasn't returned in an earlier run. For daily or weekly schedules. Skipped posts are not charged.",
            "default": false
          },
          "maxResults": {
            "title": "Max rows",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after this many charged rows in total. 0 means no limit (the run's maximum charge still applies).",
            "default": 0
          },
          "postsNewerThan": {
            "title": "Posts newer than",
            "type": "string",
            "description": "Only posts published after this: a date like 2026-10-01 (midnight UTC) or a period like \"7 days\", \"2 weeks\" or \"3 months\". Hashtag lists are ranked, not newest first, so older posts are left out (free) and the list carries on. Leave empty for every post."
          },
          "postTypes": {
            "title": "Post types",
            "type": "array",
            "description": "Only these kinds of posts from profiles, keywords and hashtags. Other posts are free and don't count toward the posts asked for. Empty = every kind. Keyword pages list reels only.",
            "items": {
              "type": "string",
              "enum": [
                "reel",
                "video",
                "image",
                "carousel"
              ],
              "enumTitles": [
                "Reels",
                "Videos (not reels)",
                "Images",
                "Carousels (several photos or videos)"
              ]
            }
          },
          "includeCommenterNames": {
            "title": "Include commenter usernames",
            "type": "boolean",
            "description": "Off: commenterUsername is empty and @handles inside comment text are replaced by @[user]. On: the commenter's public username is kept (never a picture or bio).",
            "default": false
          },
          "useOurAccount": {
            "title": "Deeper data with our account (paid plans, no cookie needed)",
            "type": "boolean",
            "description": "On a paid Apify plan, the logged-in requests go through our own Instagram account, so you don't need one. Our account is shared by everyone, so it has a daily limit and serves one run at a time: when it is busy, used up for the day or paused, the run reads signed out and says so. Same prices. Your own session cookie below takes priority if you give one.",
            "default": false
          },
          "sessionCookie": {
            "title": "Instagram session cookie (optional)",
            "type": "string",
            "description": "The value of the sessionid cookie from your own Instagram account, signed in at instagram.com (see \"Logged-in mode\" in the README for how to copy it). Use your own account. We never store it: it is kept in memory for this run only, sent only to instagram.com, and removed from every log and message. Leave empty for the usual signed-out run."
          },
          "maxLoggedInRequests": {
            "title": "Max logged-in requests",
            "minimum": 1,
            "maximum": 3000,
            "type": "integer",
            "description": "Logged-in mode only: most requests your session makes in this run (one every 2 to 3 seconds). When it is used up, the rest is read signed out. Keep it modest to keep your account safe.",
            "default": 600
          },
          "listing": {
            "title": "Listing",
            "type": "string",
            "description": "Set by this listing.",
            "default": "hashtag"
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}