{
  "openapi": "3.0.1",
  "info": {
    "title": "Instagram Reels Search: Reels by Keyword",
    "description": "Instagram reels scraper by keyword: give keywords, #hashtags or a Boolean search and get a row per reel with plays, likes, comments, post date, sound, location, tagged users, caption, hashtags and creator followers. Most relevant or newest first, date and plays filters. No login.",
    "version": "0.10",
    "x-build-id": "nMMaMqiKAGcrMD0T2"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/deepmine~instagram-reels-search/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-deepmine-instagram-reels-search",
        "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/deepmine~instagram-reels-search/runs": {
      "post": {
        "operationId": "runs-sync-deepmine-instagram-reels-search",
        "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/deepmine~instagram-reels-search/run-sync": {
      "post": {
        "operationId": "run-sync-deepmine-instagram-reels-search",
        "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": [
          "keywords"
        ],
        "properties": {
          "keywords": {
            "title": "Keywords",
            "minItems": 1,
            "type": "array",
            "description": "What to search for, a list of strings (one per line in the form): a phrase (home workout), a #hashtag or an instagram.com/popular/ topic URL. Specific phrases work best; some single broad words have no Instagram topic. Boolean searches work too: (\"home workout\" OR pilates) AND NOT giveaway (operators in capitals). You pay per reel delivered.",
            "items": {
              "type": "string",
              "pattern": "\\S"
            },
            "default": [
              "home workout",
              "skincare routine"
            ]
          },
          "maxResultsPerKeyword": {
            "title": "Max reels per keyword",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Reels per keyword. A topic has about 45 reels; with related searches on, more come from the searches Instagram lists next to it. You pay per reel, so this caps the cost per keyword. Default 100.",
            "default": 100
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "relevance",
              "newest"
            ],
            "type": "string",
            "description": "`relevance` (default): Instagram's own order for the keyword's search, then its related searches. `newest`: the Actor reads the keyword's search and its related searches until they hold enough reels from the last 90 days (or from your 'Posted in the last N days'), then delivers the newest first.",
            "default": "relevance"
          },
          "includeRelatedTopics": {
            "title": "Continue with related searches",
            "type": "boolean",
            "description": "When a keyword's own reels run out, go on with the related searches Instagram suggests for it (for home workout: home workout for women, home leg workout, ...) until the limit above. Each row says which search it came from.",
            "default": true
          },
          "requireKeywordMatch": {
            "title": "Only reels that mention the keyword",
            "type": "boolean",
            "description": "On (default): every reel's caption, hashtags or creator name contains the keyword (cosplay matches #cosplaygirl; filler words like tips, ideas or routine aren't required), and related searches that drop the keyword are skipped. Off: every reel Instagram groups under the keyword's search and its related searches, including loosely related ones. Reels left out aren't charged.",
            "default": true
          },
          "includeDetails": {
            "title": "Add reel details",
            "type": "boolean",
            "description": "Adds the video's views, the creator's name, picture and follower count, the sound (song, artist, sound id), the tagged location and coordinates, tagged users, collaborators, paid partnership and sponsors, and the video's size, from three more requests per reel. Free: no extra charge. Turn off for the fastest runs.",
            "default": true
          },
          "maxAgeDays": {
            "title": "Posted in the last N days",
            "minimum": 1,
            "maximum": 36500,
            "type": "integer",
            "description": "Keep only reels posted in the last N days, e.g. 7 or 30 (the form asks 90; a call that leaves it out takes any age). Reels left out aren't charged."
          },
          "minPlays": {
            "title": "Min plays",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only reels with at least this many plays. Reels left out aren't charged."
          },
          "minLikes": {
            "title": "Min likes",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only reels with at least this many likes (reels whose creator hides likes are left out). Reels left out aren't charged."
          },
          "minComments": {
            "title": "Min comments",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only reels with at least this many comments. Reels left out aren't charged."
          },
          "searchCreatorReels": {
            "title": "More recent reels from the creators",
            "type": "boolean",
            "description": "With 'Posted in the last N days' set: when the keyword's searches run short of reels that recent, also read the newest reels of the creators those searches show, and keep the ones whose caption, hashtags or creator name the keyword (at most 2 per creator, counting the reels the searches gave). Their rows' topic is @creator. Reels left out aren't charged.",
            "default": true
          },
          "historyStore": {
            "title": "History name",
            "type": "string",
            "description": "For scheduled runs: name a history, e.g. fitness-watch. Each run charges every reel it finds as a normal result; reels an earlier run delivered come with playsSinceLastRun, likesSinceLastRun, commentsSinceLastRun and firstSeenAt, new ones with isNew true. Kept in a key-value store in your account."
          },
          "onlyNew": {
            "title": "Only reels never delivered before",
            "type": "boolean",
            "description": "Off by default. A filter: returns only reels never delivered before by a run with this history; the others are left out (not charged, no growth numbers). Empty history name = one named after your inputs.",
            "default": false
          },
          "maxResults": {
            "title": "Max results",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Stop after this many reels in total. You pay per reel, so this caps the run's cost. Reels come in the order of your keywords.",
            "default": 10000
          },
          "includeVideoUrl": {
            "title": "Include video file link",
            "type": "boolean",
            "description": "Adds videoUrl, a direct link to each reel's MP4 file (for downloading). Instagram signs it; it stops working after a few days. Free: no extra charge.",
            "default": false
          },
          "includeTranscript": {
            "title": "Add transcripts (paid)",
            "type": "boolean",
            "description": "Adds what's said in each reel as text (transcript, transcriptLanguage): Instagram's own speech transcript, no timings. $0.0039 per reel with a transcript, on top of the reel; reels without speech aren't charged for it. Available from November 1, 2026: until then it adds nothing and costs nothing.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Apify Proxy (datacenter) is the default. If Instagram keeps refusing datacenter IPs, the Actor switches to Apify residential on its own, at no extra cost to you. Picking Residential here works the same way (its country applies to those residential tries).",
            "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
                  },
                  "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}