{
  "openapi": "3.0.1",
  "info": {
    "title": "Instagram Hashtag Scraper - Cheap and Fast",
    "description": "Track fresh public Instagram hashtag content without login. This Actor is optimized for fast public discovery and returns up to 10 recent posts or reels per hashtag with captions, usernames, URLs, hashtags, timestamps, likes, comments, and media links when available.",
    "version": "0.0",
    "x-build-id": "HwMJeUBdSbW4eeL0b"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/fabri-lab~instagram-hashtag-scraper-cheap-and-fast/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-fabri-lab-instagram-hashtag-scraper-cheap-and-fast",
        "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/fabri-lab~instagram-hashtag-scraper-cheap-and-fast/runs": {
      "post": {
        "operationId": "runs-sync-fabri-lab-instagram-hashtag-scraper-cheap-and-fast",
        "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/fabri-lab~instagram-hashtag-scraper-cheap-and-fast/run-sync": {
      "post": {
        "operationId": "run-sync-fabri-lab-instagram-hashtag-scraper-cheap-and-fast",
        "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": [
          "hashtags"
        ],
        "properties": {
          "hashtags": {
            "title": "# Hashtags",
            "type": "array",
            "description": "Enter one or more Instagram hashtags. You can use hashtags with or without #.",
            "items": {
              "type": "string"
            }
          },
          "contentType": {
            "title": "Content type",
            "enum": [
              "posts",
              "reels",
              "posts_and_reels"
            ],
            "type": "string",
            "description": "Choose whether to scrape posts, reels, or both. Reels availability depends on what Instagram returns for the hashtag.",
            "default": "posts_and_reels"
          },
          "maxResultsPerHashtag": {
            "title": "Recent results per hashtag",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Default is 10 recent public results per hashtag. You can request more, but actual counts vary by hashtag and Instagram public visibility.",
            "default": 10
          },
          "maxResultsTotal": {
            "title": "Maximum total results",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Hard total limit for the whole run. Use this to control maximum cost across all hashtags. Set 0 to rely only on the per-hashtag limit.",
            "default": 0
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "recent"
            ],
            "type": "string",
            "description": "V1 focuses on recent public hashtag results.",
            "default": "recent"
          },
          "debugMode": {
            "title": "Debug mode",
            "type": "boolean",
            "description": "Promote deep diagnostic logs to INFO level so you can inspect pagination surfaces, cursors, duplicate pages, and enrichment behavior in Apify run logs.",
            "default": false
          },
          "publicBrowserMode": {
            "title": "Public browser mode",
            "type": "boolean",
            "description": "Use a headless browser to harvest hydrated public hashtag results before falling back to raw HTML parsing. This improves no-login coverage when Instagram renders extra items client-side.",
            "default": true
          },
          "minPostDate": {
            "title": "Minimum post date",
            "type": "string",
            "description": "Post-processing date filter. Instagram does not provide a native hashtag date filter; filtering works when timestamps are available. Use YYYY-MM-DD.",
            "default": ""
          },
          "mustContainWords": {
            "title": "Must contain words",
            "type": "array",
            "description": "Keep only posts whose caption contains at least one of these words.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "excludeWords": {
            "title": "Exclude words",
            "type": "array",
            "description": "Skip posts whose caption contains any of these words.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "minLikes": {
            "title": "Minimum likes",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only posts that meet this likes threshold when metrics are available.",
            "default": 0
          },
          "minComments": {
            "title": "Minimum comments",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only posts that meet this comments threshold when metrics are available.",
            "default": 0
          },
          "enrichPostDetails": {
            "title": "Enrich post details",
            "type": "boolean",
            "description": "Fetch each public post page to fill missing likes, comments, timestamp, and media URLs when hashtag HTML does not include them. This improves completeness but adds extra requests.",
            "default": true
          },
          "publicSeedRetries": {
            "title": "Public seed retries",
            "minimum": 0,
            "maximum": 30,
            "type": "integer",
            "description": "When Instagram blocks deeper public endpoints, retry the hashtag with a small set of public HTML variants and fresh proxy sessions to collect additional unique public results. Higher values add more requests and more runtime.",
            "default": 2
          },
          "deduplicateAgainstPreviousRuns": {
            "title": "Deduplicate against previous runs",
            "type": "boolean",
            "description": "Skip posts already collected in earlier runs by shortcode or post URL.",
            "default": false
          },
          "previousShortCodes": {
            "title": "Previous shortcodes",
            "type": "array",
            "description": "Optional list of post or reel shortcodes collected in previous runs. Used only when previous-run deduplication is enabled.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "previousPostUrls": {
            "title": "Previous post URLs",
            "type": "array",
            "description": "Optional list of Instagram post or reel URLs collected in previous runs. Used only when previous-run deduplication is enabled.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify proxy configuration. Enabled by default for public Instagram reliability on Apify Cloud, with a fresh proxy session used for each request.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}