{
  "openapi": "3.0.1",
  "info": {
    "title": "Instagram Auto Commenter: Comment by User, Location & Hashtag",
    "description": "Instagram auto commenter and comment bot. Comment on the newest posts of usernames, of any location (café, neighborhood, city) and of any hashtag, from your own account. Rotating comments, human-like typing, never twice on one post. Free 9.7M-place finder. Pay per verified comment.",
    "version": "0.1",
    "x-build-id": "pQdMEgq2wH3qYqxJt"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/am_production~instagram-auto-commenter/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-am_production-instagram-auto-commenter",
        "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/am_production~instagram-auto-commenter/runs": {
      "post": {
        "operationId": "runs-sync-am_production-instagram-auto-commenter",
        "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/am_production~instagram-auto-commenter/run-sync": {
      "post": {
        "operationId": "run-sync-am_production-instagram-auto-commenter",
        "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": [
          "comments"
        ],
        "properties": {
          "session_id": {
            "title": "Step 1: Your Instagram session",
            "type": "string",
            "description": "Lets the actor comment from YOUR account without your password.<br><br><b>Easiest way (1 minute):</b><br>1. Open <a href=\"https://www.instagram.com\" target=\"_blank\">instagram.com</a> in Chrome and log in.<br>2. Press <b>F12</b> &rarr; <b>Application</b> tab (Firefox: <b>Storage</b>) &rarr; <b>Cookies</b> &rarr; <b>https://www.instagram.com</b>.<br>3. Find the row named <b>sessionid</b>, double-click its Value, copy it and paste it here.<br><br>You can also paste a whole cookie export from any extension (Cookie-Editor, EditThisCookie, Puppeteer JSON) or a <code>name=value; ...</code> cookie string. Anything works. Do not log out of that browser afterwards, logging out ends the session."
          },
          "usernames": {
            "title": "Step 2a: Track usernames: posts to comment on",
            "type": "array",
            "description": "Accounts whose newest posts and reels should get a comment. One per line. Usernames, @usernames and profile links all work, e.g. <code>natgeo</code>, <code>@nasa</code> or <code>https://www.instagram.com/natgeo/</code>. Fill in any of Step 2a, 2b and 2c.",
            "items": {
              "type": "string"
            }
          },
          "posts_per_user": {
            "title": "Posts to comment on per account",
            "minimum": 0,
            "maximum": 500,
            "type": "integer",
            "description": "How many of the newest posts or reels to comment on for each account. 0 = all posts (still stops at Max comments per run). Posts you already commented on are skipped for free.",
            "default": 1
          },
          "post_urls": {
            "title": "Or exact post / reel links",
            "type": "array",
            "description": "Optional. Specific posts or reels to comment on, one per line, e.g. <code>https://www.instagram.com/p/C9xxxxxxxxx/</code>.",
            "items": {
              "type": "string"
            }
          },
          "places": {
            "title": "Step 2b: Track locations: posts to comment on",
            "type": "array",
            "description": "<b>One location link per line</b> (or just its number). Paste many at once with <b>Bulk edit</b>.<br><br><b>Option 1, copy from Instagram:</b><br>• On a computer: open a post tagged at the place, click the place name under the username, and copy the address from your browser.<br>• On the phone app: tap the place name on a post, then <b>⋯</b> → <b>Copy link</b>.<br>It looks like <code>instagram.com/explore/locations/<b>106224666074625</b>/austin-texas/</code><br><br><b>Option 2, copy from our website:</b> open <a href=\"https://places.nosite.app\" target=\"_blank\"><b>places.nosite.app</b></a> (9.7 million places in the USA, Europe and Egypt), pick a country and city, click <b>+</b> on the places you want or add the whole city's own tag, then <b>Copy for Apify</b> and paste here.",
            "items": {
              "type": "string"
            }
          },
          "places_tab": {
            "title": "Which posts at each location",
            "enum": [
              "recent",
              "top"
            ],
            "type": "string",
            "description": "Newest posts come from people who are active right now and most likely to reply. Top posts are the location's most popular posts, often weeks old.",
            "default": "recent"
          },
          "posts_per_place": {
            "title": "Posts to comment on per location",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "How many posts to comment on at each location (1 to 50).",
            "default": 2
          },
          "hashtags": {
            "title": "Step 2c: Track hashtags: posts to comment on",
            "type": "array",
            "description": "One hashtag per line, with or without <b>#</b> (e.g. <code>cairocafe</code>). Any language works (e.g. <code>#القاهرة</code>). Tip: specific hashtags (<code>#zamalekcafe</code>) reach people better than huge ones (<code>#love</code>).",
            "items": {
              "type": "string"
            }
          },
          "hashtags_tab": {
            "title": "Which posts under each hashtag",
            "enum": [
              "recent",
              "top"
            ],
            "type": "string",
            "description": "Newest posts are minutes to hours old. Top posts are the hashtag's most popular posts, often weeks old.",
            "default": "recent"
          },
          "posts_per_hashtag": {
            "title": "Posts to comment on per hashtag",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "How many posts to comment on under each hashtag (1 to 50).",
            "default": 2
          },
          "comments": {
            "title": "Step 3: Comments to post",
            "type": "array",
            "description": "One comment per line. A random one is picked for each post and not repeated on the same account while others remain. Write <code>{username}</code> to insert the account name, e.g. <code>Love this, @{username}!</code> <code>{username}</code> becomes the account you comment on: the account itself in Step 2a, and the post's owner for posts at locations (2b) and hashtags (2c).",
            "items": {
              "type": "string"
            }
          },
          "max_comments_per_run": {
            "title": "Max comments per run",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Safety cap for the whole run, up to 100. Instagram tolerates far fewer comments than likes, so keep runs small and schedule them (Task → Schedules).",
            "default": 20
          },
          "comments_per_post": {
            "title": "Comments per post",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "How many comments to leave on each post. Each one uses a different text from your list, so add at least that many comments. More than one comment on the same post looks unnatural fast, keep it at 1 or 2.",
            "default": 1
          },
          "skip_already_commented": {
            "title": "Skip posts I already commented on",
            "type": "boolean",
            "description": "Before the first comment on a post, checks the visible comments for your own username and skips the post if it finds one. Skipped posts are free. Turn this off if you want to comment on posts you already commented on.",
            "default": true
          },
          "min_delay_seconds": {
            "title": "Min delay between comments (s)",
            "minimum": 5,
            "maximum": 30,
            "type": "integer",
            "description": "Shortest pause between comments, 5 to 30 seconds. Comments are watched much more closely than likes; the default of 10 is safe for most accounts.",
            "default": 10
          },
          "max_delay_seconds": {
            "title": "Max delay between comments (s)",
            "minimum": 10,
            "maximum": 60,
            "type": "integer",
            "description": "Longest pause between comments, 10 to 60 seconds. A random pause between min and max is used, and typing itself is slowed to a human pace.",
            "default": 25
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Usually not needed. If Instagram keeps asking this session for verification, a residential proxy from your account's country helps."
          },
          "instagram_cookies": {
            "title": "Cookie export as JSON (old field)",
            "type": "array",
            "description": "Kept so older saved tasks keep working. New users: leave empty and use Step 1 instead, which accepts the same exports."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}