{
  "openapi": "3.0.1",
  "info": {
    "title": "Instagram Reels Search Scraper",
    "description": "Search public Instagram Reels by keyword or hashtag. Returns reel URL, caption, plays, likes, author, music, and engagement per Reel. Provider-backed (ScrapeCreators primary, SociaVault fallback), cookieless, no login. MCP-ready.",
    "version": "0.1",
    "x-build-id": "Q78B93PCZczJ2kilR"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/khadinakbar~instagram-reels-search-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-khadinakbar-instagram-reels-search-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/khadinakbar~instagram-reels-search-scraper/runs": {
      "post": {
        "operationId": "runs-sync-khadinakbar-instagram-reels-search-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/khadinakbar~instagram-reels-search-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-khadinakbar-instagram-reels-search-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": {
          "keywords": {
            "title": "Keywords or hashtags",
            "type": "array",
            "description": "Use this when you want to search Instagram Reels by topic or profile intent. Enter plain keywords (e.g. 'nasa', 'travel creators'), hashtags with or without # (e.g. '#fitness', 'cooking'), or direct handles (e.g. '@nasa'). Each entry is one independent search. The actor resolves keywords to matching public profiles, then scrapes public Reels from those profiles.",
            "items": {
              "type": "string"
            }
          },
          "maxResultsPerKeyword": {
            "title": "Maximum Reels per keyword",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Use this to cap the number of saved Reels and billable default-dataset events per keyword. Enter an integer from 1 to 500; default is 20. The actor stops saving once this limit is reached for a keyword. This is a per-keyword limit, not a total limit across all keywords.",
            "default": 20
          },
          "maxProviderPages": {
            "title": "Maximum provider pages",
            "minimum": 1,
            "maximum": 60,
            "type": "integer",
            "description": "Use this advanced control to restrict the number of provider page requests per keyword. Enter an integer from 1 to 60; default is 5. Lower values are useful for low-cost canaries and controlled tests. This limits provider pages fetched, not the number of Reels saved directly.",
            "default": 5
          },
          "minimumLikes": {
            "title": "Minimum likes",
            "minimum": 0,
            "type": "integer",
            "description": "Use this to skip Reels with fewer than this many public likes. Enter a whole number such as 100; default is 0 (keep all). Reels below this value are filtered before any dataset event is charged. This is not a minimum engagement-rate filter.",
            "default": 0
          },
          "minPlayCount": {
            "title": "Minimum play count",
            "minimum": 0,
            "type": "integer",
            "description": "Use this to skip Reels with fewer than this many plays. Enter a whole number such as 5000; default is 0 (keep all). Reels below this value are filtered before any dataset event is charged. This requires the provider to expose play counts for the result.",
            "default": 0
          },
          "onlyReelsNewerThan": {
            "title": "Only Reels newer than (ISO date)",
            "type": "string",
            "description": "Use this to filter out Reels posted before a specific date. Enter an ISO 8601 date such as 2024-01-01 or 2024-06-15T00:00:00Z. Default is empty (no date filter). Reels without a parseable timestamp are kept. This filter requires the provider to return posted_at for each Reel."
          },
          "outputMode": {
            "title": "Output mode",
            "enum": [
              "full",
              "compact"
            ],
            "type": "string",
            "description": "Use this to choose between concise agent-friendly rows and richer research rows. Choose compact for the most important Reel and author fields, or full for all fields including media URLs, music metadata, cursor provenance, and engagement rates. Default is full.",
            "default": "full"
          },
          "providerOrder": {
            "title": "Provider order",
            "enum": [
              "scrapecreators-first",
              "sociavault-first",
              "scrapecreators-only",
              "sociavault-only"
            ],
            "type": "string",
            "description": "Use this advanced setting to choose which data provider is tried first. scrapecreators-first tries ScrapeCreators then falls back to SociaVault on failure. sociavault-first reverses the order. scrapecreators-only or sociavault-only skips the other entirely. Default is scrapecreators-first.",
            "default": "scrapecreators-first"
          },
          "startCursor": {
            "title": "Start cursor",
            "maxLength": 200,
            "type": "string",
            "description": "Use this when continuing a single keyword from a previous run. Paste the cursor from a previous RUN_SUMMARY keywordSummaries[].nextCursor. Leave blank to start from the first provider page. This is one shared continuation cursor; if you have multiple keywords only the first keyword continues from this cursor."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}