{
  "openapi": "3.0.1",
  "info": {
    "title": "Instagram Profile Reels Scraper With Creator Profiles",
    "description": "Instagram Profile Reels Scraper with Creator Profiles extracts Reels and creator profile data, including usernames, bios, followers, captions, views, likes, comments, hashtags, video URLs, and timestamps. Ideal for influencer research, content analysis, lead generation, and trend discovery.",
    "version": "0.1",
    "x-build-id": "8ve8SBPQHSl4kijqO"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/simpleapi~instagram-profile-reels-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-simpleapi-instagram-profile-reels-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/simpleapi~instagram-profile-reels-scraper/runs": {
      "post": {
        "operationId": "runs-sync-simpleapi-instagram-profile-reels-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/simpleapi~instagram-profile-reels-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-simpleapi-instagram-profile-reels-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",
        "required": [
          "urls"
        ],
        "properties": {
          "urls": {
            "title": "🎯 Instagram creators to scan",
            "type": "array",
            "description": "📋 **One profile per row.** All of these forms work:\n\n• 👤 Username — `natgeo`\n• 📛 Handle — `@natgeo`\n• 🔗 Profile URL — `https://www.instagram.com/natgeo/`\n• 🎞️ Reels tab URL — `https://www.instagram.com/natgeo/reels/`\n\n🚫 Post, reel and hashtag links are ignored — this actor scans **profiles**.\n🔁 Duplicates are removed automatically.\n\n💡 The two prefilled creators are deliberately *mixed-media* accounts, so a test run shows the real behaviour rather than a flattering one.",
            "items": {
              "type": "string"
            }
          },
          "resultsLimit": {
            "title": "🎬 Reels per creator",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "🔢 **How many reels to collect for each profile.**\n\n📄 Instagram returns 12 reels per request and ignores any larger page size, so 120 reels ≈ 10 requests.\n\n⚠️ **`0` means unlimited** and is bounded at 2,400 reels per profile. Every reel returned is a charged row — start small.\n\n✅ Small numbers are honoured **literally**: ask for 3 and you get 3 rows and pay for 3. `10000` means ten thousand, not unlimited.",
            "default": 10
          },
          "includeCreatorProfile": {
            "title": "🪪 Attach the creator profile to every reel",
            "type": "boolean",
            "description": "✅ **On** — each row carries `creatorFollowersCount`, `creatorFollowingCount`, `creatorPostsCount`, `creatorIsVerified`, `creatorIsPrivate`, `creatorBiography`, `creatorBioLinks`, `creatorExternalUrl`, `creatorBusinessCategory`, `creatorCategoryEnum`, `creatorHighlightReelCount` and `creatorProfilePicUrlHd`.\n\n🔁 Cached per creator id, so a 500-reel run on one account costs **one** lookup.\n🤝 Collab and cross-posted reels get the *guest* creator's profile, not the host's.\n\n🔕 **Off** — every `creator*` field is returned as `null` with `creatorProfileSource: \"disabled\"`, and the run is faster.",
            "default": true
          },
          "minFollowers": {
            "title": "📉 Minimum creator followers",
            "minimum": 0,
            "maximum": 1000000000,
            "type": "integer",
            "description": "🧹 **Drop reels whose creator is smaller than this.** The fastest way to screen a large scan down to accounts worth contacting.\n\n💸 Applied **before** the row is saved, so a filtered-out reel is **never charged**.\n🪪 Needs the creator lookup above — it is switched back on automatically if you set a threshold.\n🔕 Leave at `0` to keep every creator.",
            "default": 0
          },
          "unknownFollowerRows": {
            "title": "❓ Reels whose creator count could not be read",
            "enum": [
              "keep",
              "drop"
            ],
            "type": "string",
            "description": "🤷 What to do with a reel when Instagram returns **no follower count at all** for its creator (rare — rounded counts are recovered from the profile page for ~100 % of accounts, so this is the residual).\n\n🧾 Only has an effect when a **Minimum creator followers** threshold is set.",
            "default": "keep"
          },
          "includeSimilarAccounts": {
            "title": "🔗 Similar accounts Instagram suggests",
            "type": "boolean",
            "description": "🧭 Adds `similarAccounts[]` — the creators Instagram itself recommends alongside this one. Useful for building a shortlist from a single seed account.\n\n📊 **Measured range: 0 to 50 accounts.** Two of the eight accounts tested for this build returned **zero**, so the blueprint's \"45–49\" claim is wrong — expect a range, and expect `[]` sometimes.\n👤 Identity only: id, username, full name, verified and private flags, avatar. Instagram does **not** attach follower counts here.\n\n🔕 Off returns `null` for the field.",
            "default": true
          },
          "includeEngagementRates": {
            "title": "📈 Engagement rates per reel",
            "type": "boolean",
            "description": "🧮 Divides each reel's likes, comments and plays by the creator's follower count: `likesPerFollowerPercent`, `commentsPerFollowerPercent`, `viewsPerFollowerPercent` and `engagementRatePercent`.\n\n🛑 **Rates are withheld — emitted as `null`, never as `0`** — whenever the follower count is missing **or** is one of the rounded profile-page numbers. A rate computed against \"269M\" is arithmetic on a rounding, not a measurement. `engagementRateBasis` on every row tells you which case you are in.",
            "default": true
          },
          "creatorProfileTimeoutSecs": {
            "title": "⏱️ Creator lookup timeout",
            "minimum": 3,
            "maximum": 120,
            "type": "integer",
            "description": "⌛ Seconds to wait for one creator profile request before giving up on it.\n\n📉 A timed-out lookup leaves the `creator*` fields `null` with `creatorProfileSource: \"unavailable\"` — the reel row itself is still saved. Raise it on a slow proxy exit.",
            "default": 20
          },
          "extractEngagement": {
            "title": "❤️ Likes and comment counts",
            "type": "boolean",
            "description": "📊 Returns `likesCount` and `commentsCount` for each reel.\n\n🔕 **Off returns `null`, not `0`.** The base actor wrote a literal `0` here, which is impossible to tell apart from a reel that genuinely has no likes. Turning this off also no longer silently disables the first comment.",
            "default": true
          },
          "extractComments": {
            "title": "💬 First comment on each reel",
            "type": "boolean",
            "description": "💬 Fetches each reel's page and returns the **top comment** in `firstComment`, plus `commentsOnPageCount` and a `commentsSource` provenance flag.\n\n📈 Measured **16/16 = 100 %** on reels, logged out, for this build (10–15 comments visible per reel page).\n⏳ Costs one extra request per reel (~1 s, ~900 KB). Switch it off for the fastest possible run — nothing else on the row depends on it.",
            "default": true
          },
          "proxyConfiguration": {
            "title": "🛡️ Proxy configuration",
            "type": "object",
            "description": "🌍 Instagram's reels and profile endpoints answered from datacenter and residential exits alike during testing, but **RESIDENTIAL is recommended** — datacenter exits have been observed serving a truncated profile page with no user id, which makes the reels feed unreachable.\n\n🔓 Leave the proxy switched off to run from Apify's own IP.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}