Search BlackHatWorld Discussions
/v1/blackhatworld/searchFind public discussions and return titles, links, snippets, result types, and author and forum details when available. Set title_only to search titles only. Query spelling is preserved; no automatic spelling correction is applied. A Post result is a matching reply within the titled discussion. Titles and snippets preserve words and punctuation while normalizing whitespace. Request 1-50 pages (not a result count), or continue a search using the returned search_id, the same query, and a starting page. Pagination reports the pages retrieved and why retrieval stopped; results may not include all matching discussions. Pass a returned results[].url to POST /v1/fetch to read the discussion content. No BlackHatWorld account is required. A completed search costs 10 Credits plus 1 Credit per returned result; failed searches are not charged. Reuse the same Idempotency-Key when retrying the same request. No matches returns blackhatworld_no_results; for blackhatworld_search_failed, check the error's retryable field.
On this page
Request example
Replace placeholders with your values. Use your Team API key for authenticated requests.
https://kieapi.comcurl -X POST "https://kieapi.com/v1/blackhatworld/search" \
-H "Authorization: Bearer $SPIDER_API_KEY" \
-H 'Idempotency-Key: docs-example-01' \
-H "Content-Type: application/json" \
-d '{
"query": "<value>"
}'Authentication
BearerAuth
Parameters
Idempotency-Keyheader ยท string- Caller-generated key, up to 128 characters, that identifies one API Market write and its billing event. Reuse the same key only when retrying the same logical request. Replays do not create another reservation or capture.
Request body required
application/json
querystring requiredsearch_idstring | nullpageintegerDefault:
1pagesintegerDefault:
1delaynumber- Seconds between result pages. This wait counts toward the call's execution time limit; insufficient time fails the call instead of returning partial success.
Default:
1 timeoutnumberDefault:
30retriesinteger- Maximum additional attempts for recoverable failures. An accepted or uncertain search submission is not repeated.
Default:
2 impersonatestringDefault:
"chrome131"title_onlybooleanDefault:
false
Responses
200 Search results and pagination details.
application/json
sourceobject requiredquerystring requiredsearch_idstring requiredpaginationobject requiredresult_countinteger requiredresultsarray of object required
400 Request validation failed.
401 Missing or invalid API key.
402 The Team does not have enough available Credits for the maximum reservation.
404 BlackHatWorld accepted the search but returned no results.
409 Billing settlement requires reconciliation, or the idempotency key was reused for a different logical request.
429 Temporary rate limit.
502 Upstream fetch or network failure.
503 Required runtime service is unavailable.
Schemas
Field definitions and complete validation rules for this API. Follow a type link to its definition.
BlackHatWorldSearchRequest
object
querystring requiredsearch_idstring | nullpageintegerDefault:
1pagesintegerDefault:
1delaynumber- Seconds between result pages. This wait counts toward the call's execution time limit; insufficient time fails the call instead of returning partial success.
Default:
1 timeoutnumberDefault:
30retriesinteger- Maximum additional attempts for recoverable failures. An accepted or uncertain search submission is not repeated.
Default:
2 impersonatestringDefault:
"chrome131"title_onlybooleanDefault:
false
Complete schema
{
"type": "object",
"additionalProperties": false,
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"minLength": 1,
"maxLength": 256
},
"search_id": {
"type": [
"string",
"null"
],
"pattern": "^[0-9]+$"
},
"page": {
"type": "integer",
"minimum": 1,
"default": 1
},
"pages": {
"type": "integer",
"minimum": 1,
"maximum": 50,
"default": 1
},
"delay": {
"type": "number",
"minimum": 0,
"maximum": 60,
"default": 1,
"description": "Seconds between result pages. This wait counts toward the call's execution time limit; insufficient time fails the call instead of returning partial success."
},
"timeout": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 60,
"default": 30
},
"retries": {
"type": "integer",
"minimum": 0,
"maximum": 5,
"default": 2,
"description": "Maximum additional attempts for recoverable failures. An accepted or uncertain search submission is not repeated."
},
"impersonate": {
"type": "string",
"minLength": 1,
"maxLength": 32,
"default": "chrome131"
},
"title_only": {
"type": "boolean",
"default": false
}
}
}BlackHatWorldSearchResponse
object
sourceobject requiredquerystring requiredsearch_idstring requiredpaginationobject requiredresult_countinteger requiredresultsarray of object required
Complete schema
{
"type": "object",
"required": [
"source",
"query",
"search_id",
"pagination",
"result_count",
"results"
],
"properties": {
"source": {
"type": "object",
"properties": {
"base_url": {
"type": "string"
},
"transport": {
"type": "string",
"enum": [
"curl_cffi"
]
},
"impersonate": {
"type": [
"string",
"null"
]
},
"browser_used": {
"type": "boolean",
"description": "Whether this search used browser admission before HTTP business requests."
},
"bootstrap_used": {
"type": "boolean"
},
"pagination_cookie_sent": {
"type": "boolean",
"description": "Whether page GETs sent server-managed clearance."
},
"clearance_reused": {
"type": "boolean",
"description": "Whether this call reused cached anonymous admission."
}
}
},
"query": {
"type": "string"
},
"search_id": {
"type": "string"
},
"pagination": {
"type": "object",
"properties": {
"start_page": {
"type": "integer"
},
"requested_pages": {
"type": "integer"
},
"fetched_pages": {
"type": "integer"
},
"stopped_reason": {
"type": "string",
"enum": [
"requested_page_limit",
"last_page",
"no_results"
]
},
"pages": {
"type": "array",
"items": {
"type": "object"
}
}
}
},
"result_count": {
"type": "integer"
},
"results": {
"type": "array",
"items": {
"type": "object",
"required": [
"title",
"url",
"snippet",
"result_type"
],
"properties": {
"title": {
"type": "string",
"description": "Discussion or media title with words and punctuation preserved and whitespace normalized."
},
"url": {
"type": "string"
},
"snippet": {
"type": "string",
"description": "Matching content excerpt with words and punctuation preserved and whitespace normalized."
},
"author": {
"type": [
"string",
"null"
]
},
"result_type": {
"type": "string",
"enum": [
"Thread",
"Post",
"Media"
],
"description": "Post identifies a matching reply within the titled discussion."
},
"datetime": {
"type": [
"string",
"null"
]
},
"date": {
"type": [
"string",
"null"
]
},
"tags": {
"type": "array",
"items": {
"type": "string"
}
},
"replies": {
"type": [
"integer",
"null"
]
},
"forum": {
"type": [
"string",
"null"
]
},
"forum_url": {
"type": [
"string",
"null"
]
}
}
}
}
}
}PublicErrorResponse
object
errorPublicError required
Complete schema
{
"type": "object",
"additionalProperties": false,
"required": [
"error"
],
"properties": {
"error": {
"$ref": "#/components/schemas/PublicError"
}
}
}PublicError
object
codestring requiredAllowed:
"seoapi_price_pending", "seoapi_unavailable", "seoapi_busy", "seoapi_not_found", "seoapi_rate_limited", "seoapi_budget_exceeded", "seoapi_idempotency_conflict", "seoapi_insufficient_credits", "seoapi_admission_failed", "seoapi_execution_interrupted", "seoapi_delivery_unknown", "seoapi_response_invalid", "seoapi_model_unsupported", "seoapi_model_options_invalid", "seoapi_provider_rejected", "seo_price_pending", "seo_provider_blocked", "seo_local_rate_limited", "seo_fallback_unavailable", "seo_fallback_budget_exceeded", "seo_pagination_expired", "seo_delivery_uncertain", "seo_auth_required", "seo_initialization_required", "seo_permission_denied", "seo_verification_required", "seo_rate_limited", "seo_upstream_unavailable", "seo_transport_failed", "seo_invalid_response", "seo_rpc_error", "seo_period_unavailable", "seo_account_unavailable", "seo_session_busy", "seo_configuration_required", "validation_error", "invalid_request", "unsupported_feature", "authentication_required", "permission_denied", "not_found", "run_not_found", "crawl_not_found", "artifact_not_found", "session_not_found", "profile_not_found", "profile_in_use", "profile_not_ready", "profile_not_cloneable", "profile_limit_reached", "profile_proxy_conflict", "proxy_not_found", "proxy_unavailable", "invalid_session_options", "invalid_query_options", "invalid_cursor", "idempotency_key_required", "browser_session_limit_reached", "browser_capacity_exhausted", "browser_start_timeout", "browser_runtime_unavailable", "session_not_active", "controller_already_connected", "browser_relay_unavailable", "precondition_required", "precondition_failed", "timeout", "run_not_ready", "artifact_expired", "quota_exceeded", "insufficient_credits", "billing_reconciliation_required", "rate_limited", "fetch_failed", "render_failed", "maps_rate_limited", "maps_challenge", "maps_schema_changed", "maps_invalid_response", "maps_transport_failed", "maps_page_budget_exhausted", "google_trends_rate_limited", "google_trends_challenge", "google_trends_explore_failed", "google_trends_widget_missing", "google_trends_related_failed", "google_trends_invalid_response", "google_trends_transport_failed", "google_trends_collection_failed", "google_ads_account_context_missing", "google_ads_batch_failed", "google_ads_browser_context_missing", "google_ads_browser_unavailable", "google_ads_collection_failed", "google_ads_page_failed", "google_ads_protocol_drift", "google_ads_rate_limited", "google_ads_timeout", "twitter_provider_unavailable", "twitter_provider_rejected", "twitter_submission_unknown", "wechat_transport_failed", "wechat_rate_limited", "wechat_invalid_response", "wechat_redirect_rejected", "wechat_verification_required", "wechat_parse_failed", "blackhatworld_search_failed", "blackhatworld_no_results", "reddit_read_failed", "idempotency_conflict", "idempotency_in_progress", "service_unavailable", "internal_error"messagestring requiredtypestring requiredAllowed:
"auth", "validation", "quota", "rate_limit", "not_found", "execution", "conflict", "internal"retryableboolean requiredrequest_idstring | nulldetailsobject
Complete schema
{
"type": "object",
"additionalProperties": false,
"required": [
"code",
"message",
"type",
"retryable"
],
"properties": {
"code": {
"type": "string",
"enum": [
"seoapi_price_pending",
"seoapi_unavailable",
"seoapi_busy",
"seoapi_not_found",
"seoapi_rate_limited",
"seoapi_budget_exceeded",
"seoapi_idempotency_conflict",
"seoapi_insufficient_credits",
"seoapi_admission_failed",
"seoapi_execution_interrupted",
"seoapi_delivery_unknown",
"seoapi_response_invalid",
"seoapi_model_unsupported",
"seoapi_model_options_invalid",
"seoapi_provider_rejected",
"seo_price_pending",
"seo_provider_blocked",
"seo_local_rate_limited",
"seo_fallback_unavailable",
"seo_fallback_budget_exceeded",
"seo_pagination_expired",
"seo_delivery_uncertain",
"seo_auth_required",
"seo_initialization_required",
"seo_permission_denied",
"seo_verification_required",
"seo_rate_limited",
"seo_upstream_unavailable",
"seo_transport_failed",
"seo_invalid_response",
"seo_rpc_error",
"seo_period_unavailable",
"seo_account_unavailable",
"seo_session_busy",
"seo_configuration_required",
"validation_error",
"invalid_request",
"unsupported_feature",
"authentication_required",
"permission_denied",
"not_found",
"run_not_found",
"crawl_not_found",
"artifact_not_found",
"session_not_found",
"profile_not_found",
"profile_in_use",
"profile_not_ready",
"profile_not_cloneable",
"profile_limit_reached",
"profile_proxy_conflict",
"proxy_not_found",
"proxy_unavailable",
"invalid_session_options",
"invalid_query_options",
"invalid_cursor",
"idempotency_key_required",
"browser_session_limit_reached",
"browser_capacity_exhausted",
"browser_start_timeout",
"browser_runtime_unavailable",
"session_not_active",
"controller_already_connected",
"browser_relay_unavailable",
"precondition_required",
"precondition_failed",
"timeout",
"run_not_ready",
"artifact_expired",
"quota_exceeded",
"insufficient_credits",
"billing_reconciliation_required",
"rate_limited",
"fetch_failed",
"render_failed",
"maps_rate_limited",
"maps_challenge",
"maps_schema_changed",
"maps_invalid_response",
"maps_transport_failed",
"maps_page_budget_exhausted",
"google_trends_rate_limited",
"google_trends_challenge",
"google_trends_explore_failed",
"google_trends_widget_missing",
"google_trends_related_failed",
"google_trends_invalid_response",
"google_trends_transport_failed",
"google_trends_collection_failed",
"google_ads_account_context_missing",
"google_ads_batch_failed",
"google_ads_browser_context_missing",
"google_ads_browser_unavailable",
"google_ads_collection_failed",
"google_ads_page_failed",
"google_ads_protocol_drift",
"google_ads_rate_limited",
"google_ads_timeout",
"twitter_provider_unavailable",
"twitter_provider_rejected",
"twitter_submission_unknown",
"wechat_transport_failed",
"wechat_rate_limited",
"wechat_invalid_response",
"wechat_redirect_rejected",
"wechat_verification_required",
"wechat_parse_failed",
"blackhatworld_search_failed",
"blackhatworld_no_results",
"reddit_read_failed",
"idempotency_conflict",
"idempotency_in_progress",
"service_unavailable",
"internal_error"
]
},
"message": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"auth",
"validation",
"quota",
"rate_limit",
"not_found",
"execution",
"conflict",
"internal"
]
},
"retryable": {
"type": "boolean"
},
"request_id": {
"type": [
"string",
"null"
]
},
"details": {
"type": "object",
"additionalProperties": true
}
}
}