{
  "openapi": "3.0.1",
  "info": {
    "title": "BlackHatWorld scraper & Search — Threads & Full Posts, No Proxy",
    "description": "Scrape any BlackHatWorld thread straight from its URL — full posts with their images, formatting, links, reactions (and who reacted) and author details — or search the forum and scrape every matching thread. No login or proxy required.",
    "version": "0.15",
    "x-build-id": "T6amrPgjavwafWLlL"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/red_crawler~BlackHatWorld-scraper-search/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-red_crawler-BlackHatWorld-scraper-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/red_crawler~BlackHatWorld-scraper-search/runs": {
      "post": {
        "operationId": "runs-sync-red_crawler-BlackHatWorld-scraper-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/red_crawler~BlackHatWorld-scraper-search/run-sync": {
      "post": {
        "operationId": "run-sync-red_crawler-BlackHatWorld-scraper-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",
        "properties": {
          "mode": {
            "title": "Mode",
            "enum": [
              "scrape",
              "search"
            ],
            "type": "string",
            "description": "Pick what the actor does. \"Scrape thread URLs\" ignores the search entirely and scrapes the exact thread URLs you paste — fill in Thread URLs below. \"Search BlackHatWorld\" runs a keyword search and returns every matching result — fill in the Search query and the search options below. Only the fields for the mode you pick are used; everything for the other mode is ignored.",
            "default": "scrape"
          },
          "threadUrls": {
            "title": "Thread URLs — Scrape mode",
            "type": "array",
            "description": "Scrape mode only. Paste one or more BlackHatWorld thread URLs to scrape them directly. Each thread is returned with its full posts (content, images, links, reactions and author details). Ignored in Search mode.",
            "items": {
              "type": "string"
            }
          },
          "threadScope": {
            "title": "What to scrape from each thread",
            "enum": [
              "all_posts",
              "first_post"
            ],
            "type": "string",
            "description": "Scrape mode. Applies to the threads you paste above. \"First post only\" returns just the opening post; \"All posts\" returns the opening post plus every reply.",
            "default": "all_posts"
          },
          "includeReactors": {
            "title": "Include who reacted",
            "type": "boolean",
            "description": "Scrape mode. Also fetch the full list of members who reacted to each post (username, profile and reaction type). This costs extra requests per post, so leave it off unless you need the reactor list — the reaction count and the first few reactor names are always included anyway.",
            "default": false
          },
          "maxPostsPerThread": {
            "title": "Max posts per thread",
            "minimum": 0,
            "type": "integer",
            "description": "Scrape mode. When scraping all posts, cap how many posts are pulled from each thread. 0 = no cap (all posts). Ignored when \"First post only\" is selected.",
            "default": 0
          },
          "query": {
            "title": "Search query — Search mode",
            "type": "string",
            "description": "Search mode only. Keywords to search for across BlackHatWorld (e.g. \"apify\", \"instagram automation\", \"reddit upvotes\"). Ignored in Scrape mode."
          },
          "searchType": {
            "title": "Search type",
            "enum": [
              "everything",
              "threads",
              "media",
              "comments",
              "profiles",
              "tags"
            ],
            "type": "string",
            "description": "What to search on BlackHatWorld. \"Search everything\" returns matches across all content types at once (threads, media, profile posts…), each row tagged with its type. \"Search threads\" returns discussion threads with their full post content. \"Search media\" returns image-gallery items (title, category, uploader, image URL, tags). \"Search media comments\" returns the comments left on gallery items. \"Search profile posts\" returns status posts left on member profiles. \"Search tags\" returns the threads carrying a given tag (enter the tag as the search query). Some fields below apply to one search type only — they are ignored for the others.",
            "default": "threads"
          },
          "order": {
            "title": "Sort results by",
            "enum": [
              "relevance",
              "date",
              "replies"
            ],
            "type": "string",
            "description": "How to order results. \"Most replies\" applies to thread search only.",
            "default": "relevance"
          },
          "titleOnly": {
            "title": "Search titles only",
            "type": "boolean",
            "description": "Match the query against thread titles only, ignoring post bodies.",
            "default": false
          },
          "newerThan": {
            "title": "Only threads newer than",
            "type": "string",
            "description": "Optional. Only include threads with activity on or after this date. Leave blank for no lower limit."
          },
          "olderThan": {
            "title": "Only threads older than",
            "type": "string",
            "description": "Optional. Only include threads with activity on or before this date. Leave blank for no upper limit."
          },
          "users": {
            "title": "Started by (usernames)",
            "type": "string",
            "description": "Optional. Only threads started by these BlackHatWorld usernames (comma-separated)."
          },
          "profileRecipients": {
            "title": "Posted on profile of (members) — profile posts only",
            "type": "string",
            "description": "Optional (profile-post search only). Only profile posts left on these members' profiles (comma-separated usernames). Leave blank for any profile."
          },
          "forums": {
            "title": "Limit to forum(s) — threads only",
            "type": "array",
            "description": "Optional (thread search only). Pick one or more BlackHatWorld forums to search. Leave empty to search the whole site. (Indented entries are sub-forums; pick a top-level section plus \"Include sub-forums\" to cover everything under it.)",
            "items": {
              "type": "string",
              "enum": [
                "23",
                "311",
                "242",
                "261",
                "262",
                "263",
                "265",
                "299",
                "24",
                "25",
                "26",
                "226",
                "31",
                "303",
                "73",
                "203",
                "310",
                "193",
                "194",
                "195",
                "308",
                "196",
                "197",
                "198",
                "18",
                "112",
                "43",
                "199",
                "206",
                "200",
                "302",
                "201",
                "1",
                "252",
                "28",
                "9",
                "3",
                "2",
                "101",
                "103",
                "280",
                "270",
                "32",
                "86",
                "215",
                "214",
                "87",
                "211",
                "301",
                "279",
                "217",
                "216",
                "210",
                "77",
                "95",
                "168",
                "173",
                "53",
                "169",
                "171",
                "108",
                "209",
                "224",
                "170",
                "172",
                "94",
                "30",
                "11",
                "107",
                "15",
                "66",
                "71",
                "72",
                "225",
                "96",
                "50",
                "218",
                "68",
                "69",
                "76",
                "65",
                "12",
                "175",
                "106",
                "158",
                "167",
                "208",
                "132",
                "13",
                "83",
                "219",
                "93",
                "85",
                "125",
                "205",
                "102",
                "141",
                "75",
                "174",
                "165",
                "40",
                "79",
                "128",
                "60",
                "61",
                "62",
                "131",
                "59",
                "129",
                "80",
                "127",
                "130",
                "126",
                "212",
                "207",
                "221",
                "269",
                "235",
                "222",
                "213"
              ],
              "enumTitles": [
                "BlackHatWorld",
                "— BlackHat World News & Updates",
                "— Newbie Guide",
                "— — Brand New to BHW",
                "— — Newbies",
                "— — Newbie+",
                "— — Marketplace Sellers",
                "— — New to Marketplace",
                "— Introductions",
                "— BlackHat Lounge",
                "— Forum Suggestions & Feedback",
                "— — BHW Beta Testers",
                "— Dispute Resolution",
                "— Free Review Copies For Marketplace Approvals",
                "The Marketplace",
                "— BHW Marketplace rules and how to post",
                "— Account Selling / Renting Services",
                "— Affiliate programs - CPA networks",
                "— Content / Copywriting",
                "— Domains & websites for sale",
                "— eBooks, methods and courses",
                "— Hosting",
                "— Hot Deals",
                "— Images, logos & videos",
                "— Misc",
                "— Proxies For Sale",
                "— SEO - Link building",
                "— SEO - Other",
                "— SEO - Packages",
                "— Social Media",
                "— Social Media - Panels",
                "— Web Design",
                "Black Hat SEO",
                "— AI - Artificial Intelligence in Digital Marketing",
                "— Black Hat SEO",
                "— Black Hat SEO Tools",
                "— Blogging",
                "— Cloaking and Content Generators",
                "— Proxies",
                "— — Proxy Lists",
                "— Voice Search",
                "Social Media",
                "— General Social Media Chat",
                "— FaceBook",
                "— Instagram",
                "— Linkedin",
                "— Myspace",
                "— Pinterest",
                "— Reddit",
                "— TikTok",
                "— Tumblr",
                "— Weibo",
                "— X (formerly Twitter)",
                "— YouTube",
                "White Hat SEO",
                "— Copywriting & Sales Persuasion",
                "— — Downloads - Copywriting & Sales",
                "— Domain Names & Parking",
                "— Graphic Design",
                "— — Downloads - Graphic design",
                "— Link Building",
                "— Local SEO",
                "— Online Reputation Management (ORM)",
                "— Video Production",
                "— — Downloads - Video production",
                "— Web Hosting",
                "— White Hat SEO",
                "Making Money",
                "— Associated Content & Writing Articles",
                "— Affiliate Programs",
                "— — Clickbank",
                "— — CJ Affiliate",
                "— — Other Affiliate Programs",
                "— — Zero Parallel & T.UK",
                "— Business & Tax Advice",
                "— CPA",
                "— CryptoCurrency",
                "— Dropshipping & Wholesale Hookups",
                "— Ebay",
                "— Hire a Freelancer",
                "— Joint Ventures",
                "— Making Money",
                "— Media Buying",
                "— Membership Sites",
                "— Mobile Marketing",
                "— My Journey Discussions",
                "— New Markets",
                "— Offline Marketing",
                "— Pay Per Click",
                "— — Google Ads",
                "— — Facebook",
                "— — Yahoo & Bing MSN",
                "— — Other PPC Networks",
                "— — General PPC Discussion",
                "— Pay Per Install",
                "— Pay Per View",
                "— Site Flipping",
                "— Torrents",
                "— Freebies / Giveaways",
                "— Service Reviews & Beta Testers Help Wanted",
                "Programming & Web Design",
                "— Programming",
                "— — General Programming Chat",
                "— — C, C++, C#",
                "— — Visual Basic 6",
                "— — Visual Basic .NET",
                "— — Other Languages",
                "— Scripting",
                "— — General Scripting Chat",
                "— — HTML & JavaScript",
                "— — PHP & Perl",
                "— — Other Scripting Languages",
                "— Web Design",
                "Conferences / Events",
                "— BHW Events",
                "— — UnGagged",
                "— — — UnGagged Los Angeles",
                "— — — UnGagged Las Vegas",
                "— — — UnGagged London",
                "— — — UnGagged 2014 - Las Vegas"
              ]
            }
          },
          "searchSubForums": {
            "title": "Search sub-forums as well — threads only",
            "type": "boolean",
            "description": "Thread search only. When forum(s) are selected above, also search the forums nested inside them.",
            "default": false
          },
          "mediaCategories": {
            "title": "Search in categories — media only",
            "type": "array",
            "description": "Optional (media search only). Limit the media search to these BlackHatWorld gallery categories. Leave empty to search all categories.",
            "items": {
              "type": "string",
              "enum": [
                "",
                "4",
                "3"
              ],
              "enumTitles": [
                "All categories",
                "Marketplace",
                "Signature images"
              ]
            }
          },
          "searchMediaChildCategories": {
            "title": "Search child categories as well — media only",
            "type": "boolean",
            "description": "Media search only. When categories are selected above, also search the categories nested inside them.",
            "default": true
          },
          "commentTypes": {
            "title": "Comments on — media comments only",
            "type": "array",
            "description": "Optional (media-comment search only). Limit to comments left on these item types. Leave both selected (the default) to include every comment.",
            "items": {
              "type": "string",
              "enum": [
                "media",
                "albums"
              ],
              "enumTitles": [
                "Media items",
                "Albums"
              ]
            },
            "default": [
              "media",
              "albums"
            ]
          },
          "maxResults": {
            "title": "Max results",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Stop after this many results. For thread search, each result is fully scraped (all posts), so this controls run time and cost.",
            "default": 25
          },
          "minReplies": {
            "title": "Minimum replies — threads only",
            "minimum": 0,
            "type": "integer",
            "description": "Thread search only. Only include threads with at least this many replies. 0 = no minimum.",
            "default": 0
          },
          "searchThreadScope": {
            "title": "What to scrape from each thread",
            "enum": [
              "all_posts",
              "first_post"
            ],
            "type": "string",
            "description": "Search mode. Applies to every thread your search returns. \"First post only\" returns just the opening post; \"All posts\" returns the opening post plus every reply.",
            "default": "all_posts"
          },
          "searchIncludeReactors": {
            "title": "Include who reacted",
            "type": "boolean",
            "description": "Search mode. Also fetch the full list of members who reacted to each post (username, profile and reaction type). This costs extra requests per post, so leave it off unless you need the reactor list — the reaction count and the first few reactor names are always included anyway.",
            "default": false
          },
          "searchMaxPostsPerThread": {
            "title": "Max posts per thread",
            "minimum": 0,
            "type": "integer",
            "description": "Search mode. When scraping all posts, cap how many posts are pulled from each thread your search returns. 0 = no cap (all posts). Ignored when \"First post only\" is selected.",
            "default": 0
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}