Complete Endpoint Documentation
All ProxyTurk API endpoints, parameters, response formats, and error codes are documented here. Base URL: https://api.proxyturk.com
# Web Scrapingcurl -X POST https://api.proxyturk.com/v1/scrape?wait=true \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{"url": "https://example.com", "formats": ["markdown"]}'# AI Parsercurl -X POST https://api.proxyturk.com/v1/parse?wait=true \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{"url": "https://example.com/product", "prompt": "Extract product name and price"}'# SERP APIcurl -X POST https://api.proxyturk.com/v1/serp?wait=true \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{"query": "best proxy provider", "location": "Turkey"}'All requests are sent and received in JSON format.
Base URL: https://api.proxyturk.com Authentication: Authorization: Bearer YOUR_API_KEY Content-Type: application/json
All scraping endpoints work asynchronously by default. For sync mode, add ?wait=true to the URL.
Used to extract data from web pages. Supports HTML, markdown, screenshot, and more formats.
Parameters: - url (string, required): Target URL - formats (string[], optional): Output formats ["html", "markdown", "text", "screenshot"] - js_render (boolean, optional): JavaScript rendering (default: false) - wait_for (string, optional): CSS selector - wait until element loads - proxy_country (string, optional): Proxy country (TR, US, DE, etc.) - webhook_url (string, optional): Result webhook URL
Response (200 sync / 202 async): - success: boolean - data: { html?, markdown?, text?, screenshot_url? } - meta: { processing_time_ms, credits_used } - job_id: string (in async mode)
AI-powered structured data extraction. Extracts JSON from HTML using natural language commands.
Parameters: - url (string, required*): Target URL (*one of url or html is required) - html (string, required*): Direct HTML content - prompt (string, required): Natural language command describing what to extract - schema (object, optional): Expected JSON schema - model (string, optional): AI model selection (gpt-4o, claude-3.5-sonnet) - webhook_url (string, optional): Result webhook URL
Response (200 sync / 202 async): - success: boolean - data: object (structured data matching schema) - meta: { processing_time_ms, credits_used, model_used }
Used to get search engine results pages (SERP).
Parameters: - query (string, required): Search query - engine (string, optional): Search engine ("google", "bing", "yandex") - default: "google" - location (string, optional): Location ("Turkey", "United States", etc.) - language (string, optional): Language code ("tr", "en", etc.) - num_results (number, optional): Number of results (default: 10, max: 100) - device (string, optional): Device type ("desktop", "mobile") - webhook_url (string, optional): Result webhook URL
Response (200 sync / 202 async): - success: boolean - data: { organic: [{ position, title, url, description, snippet }], total_results, search_time_ms } - meta: { processing_time_ms, credits_used }
Used to query async job status. Poll until the job completes.
URL Parameters: - id (string, required): Job ID
Response (200): - job_id: string - status: "queued" | "processing" | "completed" | "failed" - endpoint: "scrape" | "parse" | "serp" - result: object (only when status=completed) - error: { code, message } (only when status=failed) - created_at: ISO 8601 timestamp - completed_at: ISO 8601 timestamp (when completed)
Polling recommendation: Poll every 1 second for the first 5 seconds, then every 3 seconds.
Used to list jobs with filtering and pagination.
Query Parameters: - status (string, optional): Filter ("queued", "processing", "completed", "failed") - endpoint (string, optional): Endpoint filter ("scrape", "parse", "serp") - limit (number, optional): Results per page (default: 20, max: 100) - offset (number, optional): Number of records to skip
Response (200): - data: Job[] - pagination: { total, limit, offset, has_more }
Sync mode (?wait=true) keeps the HTTP connection open until the result is ready (max 60 seconds). Async mode immediately returns a 202 status with job_id, and you get the result by polling GET /v1/jobs/{id} or via webhook.
HTTP 429 status code is returned. The Retry-After response header indicates how many seconds to wait. SDKs handle automatic retries.
Scrape: 1 credit, Parse: 5 credits, SERP: 2 credits. JavaScript rendering adds +1 credit. Check the pricing page for detailed pricing.