SpideyDataAPI Reference
API navigation Crawl
Crawl{crawl_id}

List Structured Crawl Items

GET/v1/crawl/{crawl_id}/items

Returns item-level structured extraction rows derived from crawl page results.

On this page

Request example

Replace placeholders with your values. Use your Team API key for authenticated requests.

API base https://kieapi.com
curl -G "https://kieapi.com/v1/crawl/{crawl_id}/items" \
  -H "Authorization: Bearer $SPIDER_API_KEY" \
  --data-urlencode 'limit=20'

Authentication

BearerAuth

Parameters

crawl_id path · string required
limit query · integer

Default: 20

Minimum: 1

Maximum: 100

cursor query · string | null

Responses

200 Crawl structured items page.

application/json

CrawlItemsResponse

crawl PublicCrawl required
items array of PublicCrawlItem required
next_cursor string | null
401 Missing or invalid API key.

application/json

PublicErrorResponse

error PublicError required
403 Authenticated principal cannot access this resource.

application/json

PublicErrorResponse

error PublicError required
404 Crawl was not found or is not visible to this workspace.

application/json

PublicErrorResponse

error PublicError required
429 Temporary rate limit.

application/json

PublicErrorResponse

error PublicError required
503 Required runtime service is unavailable.

application/json

PublicErrorResponse

error PublicError required

Schemas

Field definitions and complete validation rules for this API. Follow a type link to its definition.

CrawlItemsResponse

object

crawl PublicCrawl required
items array of PublicCrawlItem required
next_cursor string | null
Complete schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "crawl",
    "items"
  ],
  "properties": {
    "crawl": {
      "$ref": "#/components/schemas/PublicCrawl"
    },
    "items": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/PublicCrawlItem"
      }
    },
    "next_cursor": {
      "type": [
        "string",
        "null"
      ]
    }
  }
}

PublicCrawl

object

id string required
run_id string | null
status PublicStatus required
submitted_url_count integer | null
queued_url_count integer | null
max_depth integer | null
queue_counts object
processed_count integer | null
remaining_count integer | null
stop_reason string | null
links object
results_url string | null
Complete schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "id",
    "status"
  ],
  "properties": {
    "id": {
      "type": "string"
    },
    "run_id": {
      "type": [
        "string",
        "null"
      ]
    },
    "status": {
      "$ref": "#/components/schemas/PublicStatus"
    },
    "submitted_url_count": {
      "type": [
        "integer",
        "null"
      ],
      "minimum": 0
    },
    "queued_url_count": {
      "type": [
        "integer",
        "null"
      ],
      "minimum": 0
    },
    "max_depth": {
      "type": [
        "integer",
        "null"
      ],
      "minimum": 0
    },
    "queue_counts": {
      "type": "object",
      "additionalProperties": {
        "type": "integer"
      }
    },
    "processed_count": {
      "type": [
        "integer",
        "null"
      ],
      "minimum": 0
    },
    "remaining_count": {
      "type": [
        "integer",
        "null"
      ],
      "minimum": 0
    },
    "stop_reason": {
      "type": [
        "string",
        "null"
      ]
    },
    "diagnostics": {
      "$ref": "#/components/schemas/PublicCrawlDiagnostics"
    },
    "links": {
      "type": "object",
      "additionalProperties": {
        "type": "string"
      }
    },
    "results_url": {
      "type": [
        "string",
        "null"
      ]
    }
  }
}

PublicStatus

string

Complete schema
{
  "type": "string",
  "enum": [
    "queued",
    "running",
    "paused",
    "completed",
    "failed",
    "low_quality",
    "budget_exhausted",
    "expired"
  ]
}

PublicCrawlDiagnostics

object

Public crawl diagnostics are sanitized aggregate counters for processed pages, blocked pages, engine attempts, and retry taxonomy. They do not expose raw selectors, profile data, proxy data, CDP URLs, DICloak/provider internals, identity feedback kinds, retry policy reasons, or raw audit attempt rows.

processed_count integer

Default: 0

blocked_count integer

Default: 0

block_reasons object
engine_attempts object
Complete schema
{
  "type": "object",
  "additionalProperties": false,
  "description": "Public crawl diagnostics are sanitized aggregate counters for processed pages, blocked pages, engine attempts, and retry taxonomy. They do not expose raw selectors, profile data, proxy data, CDP URLs, DICloak/provider internals, identity feedback kinds, retry policy reasons, or raw audit attempt rows.\n",
  "properties": {
    "processed_count": {
      "type": "integer",
      "minimum": 0,
      "default": 0
    },
    "blocked_count": {
      "type": "integer",
      "minimum": 0,
      "default": 0
    },
    "block_reasons": {
      "type": "object",
      "additionalProperties": {
        "type": "integer",
        "minimum": 0
      }
    },
    "engine_attempts": {
      "type": "object",
      "additionalProperties": {
        "type": "integer",
        "minimum": 0
      }
    },
    "retry": {
      "$ref": "#/components/schemas/PublicCrawlRetryDiagnostics"
    }
  }
}

PublicCrawlRetryDiagnostics

object

Public sanitized aggregate for crawl retry taxonomy. Counts are bucketed into safe categories and do not expose queue row internals, retry policy reasons, identity feedback kinds, or audit attempts.

scheduled_count integer

Default: 0

failed_count integer

Default: 0

categories object
next_retry_at string | null (date-time)
Complete schema
{
  "type": "object",
  "additionalProperties": false,
  "description": "Public sanitized aggregate for crawl retry taxonomy. Counts are bucketed into safe categories and do not expose queue row internals, retry policy reasons, identity feedback kinds, or audit attempts.\n",
  "properties": {
    "scheduled_count": {
      "type": "integer",
      "minimum": 0,
      "default": 0
    },
    "failed_count": {
      "type": "integer",
      "minimum": 0,
      "default": 0
    },
    "categories": {
      "type": "object",
      "additionalProperties": {
        "type": "integer",
        "minimum": 0
      }
    },
    "next_retry_at": {
      "type": [
        "string",
        "null"
      ],
      "format": "date-time"
    }
  }
}

PublicCrawlItem

object

crawl_id string required
run_id string required
page_url string (uri) required
final_url string | null (uri)
schema_name string | null
position integer required
data object required
Complete schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "crawl_id",
    "run_id",
    "page_url",
    "position",
    "data"
  ],
  "properties": {
    "crawl_id": {
      "type": "string"
    },
    "run_id": {
      "type": "string"
    },
    "page_url": {
      "type": "string",
      "format": "uri"
    },
    "final_url": {
      "type": [
        "string",
        "null"
      ],
      "format": "uri"
    },
    "schema_name": {
      "type": [
        "string",
        "null"
      ]
    },
    "position": {
      "type": "integer",
      "minimum": 0
    },
    "data": {
      "type": "object",
      "additionalProperties": true
    }
  }
}

PublicErrorResponse

object

error PublicError required
Complete schema
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "error"
  ],
  "properties": {
    "error": {
      "$ref": "#/components/schemas/PublicError"
    }
  }
}

PublicError

object

code string required

Allowed: "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 string required
type string required

Allowed: "auth", "validation", "quota", "rate_limit", "not_found", "execution", "conflict", "internal"

retryable boolean required
request_id string | null
details object
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
    }
  }
}