{
"openapi": "3.1.0",
"info": {
"title": "Geekflare",
"description": "Official OpenAPI specification for all Geekflare endpoints.",
"version": "1.0.0",
"license": { "name": "MIT" }
},
"servers": [{ "url": "https://api.geekflare.com" }],
"security": [
{
"x-api-key": []
}
],
"paths": {
"/metascraping": {
"post": {
"description": "Extract a page's meta tags, Open Graph, and Twitter Card data like title, description, canonical URL, images, and more without scraping the full page body.",
"operationId": "metaScrape",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/MetaScrapeDto"
}
}
}
},
"responses": {
"200": {
"description": "Successfully scraped webpage meta",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/MetaScrapeResponseDto"
}
}
}
},
"400": {
"description": "Invalid URL.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BaseErrorResponseDto"
},
"example": {
"timestamp": 1700000000000,
"apiStatus": "failure",
"apiCode": 400,
"message": "INVALID_URL",
"details": "The URL must be a valid HTTP or HTTPS URL."
}
}
}
},
"422": {
"description": "No metadata found.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BaseErrorResponseDto"
},
"example": {
"timestamp": 1700000000000,
"apiStatus": "failure",
"apiCode": 422,
"message": "NO_METADATA",
"details": "Metadata could not be extracted from the target URL."
}
}
}
},
"500": {
"description": "Crawling failed.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BaseErrorResponseDto"
},
"example": {
"timestamp": 1700000000000,
"apiStatus": "failure",
"apiCode": 500,
"message": "CRAWL_FAILED",
"details": "Our crawling service encountered an error while attempting to fetch data from the specified URL."
}
}
}
}
},
"summary": "Scrape a webpage meta with custom options",
"tags": ["api-tool"]
}
},
"/webscraping": {
"post": {
"description": "Fetch a page and return content as Markdown, HTML, JSON, or plain text. Automatically detects whether JavaScript rendering is needed, with optional stealth mode, `proxyMode`-controlled proxy routing, CSS/XPath field extraction, and ready-made `product`/`contact` extraction templates.",
"operationId": "webScrape",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/WebScrapeDto"
},
"examples": {
"default": {
"summary": "Default",
"value": {
"url": "https://example.com"
}
},
"customOptions": {
"summary": "Custom options",
"value": {
"url": "https://example.com",
"format": ["markdown", "json"],
"stealth": true,
"waitTime": 2.5
}
},
"withProxy": {
"summary": "With proxy",
"value": {
"url": "https://example.com",
"proxyMode": true,
"proxyCountry": "gb"
}
},
"withTemplate": {
"summary": "With extraction template",
"value": {
"url": "https://example.com/products/laptop-107",
"extractionMode": "template",
"template": "product"
}
}
}
}
}
},
"responses": {
"200": {
"description": "Successfully scraped webpage",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/WebScrapeResponseDto"
},
"examples": {
"default": {
"summary": "Default scrape",
"value": {
"timestamp": 1778737930991,
"apiStatus": "success",
"apiCode": 200,
"meta": {
"url": "https://example.com",
"device": "desktop",
"format": ["html-llm"],
"fileOutput": false,
"blockAds": true,
"renderJS": true,
"stealth": false,
"waitTime": 0,
"extractionMode": "default",
"proxyMode": "false",
"proxyUsed": false,
"test": { "id": "abc123" }
},
"data": "# Example Domain\n\nThis domain is for use in illustrative examples..."
}
},
"templateContact": {
"summary": "extractionMode: template, template: contact",
"value": {
"timestamp": 1786985696914,
"apiStatus": "success",
"apiCode": 200,
"meta": {
"url": "https://testingurl.dev/contact",
"device": "desktop",
"format": ["json"],
"fileOutput": false,
"blockAds": true,
"renderJS": true,
"stealth": false,
"waitTime": 1,
"extractionMode": "template",
"template": "contact",
"proxyMode": "false",
"proxyUsed": false,
"test": { "id": "8f3a07aa-8b8d-4f21-b0d6-706d3fea5dc0" }
},
"data": {
"json": {
"contact": {
"companyName": "TestingURL.dev",
"locations": [
{
"id": "london",
"label": "London",
"address": "221B Baker Street",
"mapUrl": "https://www.google.com/maps/search/?api=1&query=221B%20Baker%20Street",
"phones": [{ "value": "+1-555-0102" }],
"emails": [
{ "value": "hello@testingurl.dev", "label": "general" },
{ "value": "sales@testingurl.dev", "label": "sales" }
]
}
],
"contactChannels": {
"emails": [
{ "value": "hello@testingurl.dev", "label": "general" },
{ "value": "sales@testingurl.dev", "label": "sales" }
],
"phones": [{ "value": "+1-555-0102" }],
"forms": ["https://testingurl.dev/contact"]
},
"socialProfiles": [
{ "platform": "github", "url": "https://github.com/geekflare/testingurl" }
],
"extractionMeta": {
"fieldsFound": ["companyName", "locations", "address", "phones", "emails", "forms", "socialProfiles"],
"fieldsMissing": ["hours", "chatUrl", "contactPersons"]
}
},
"raw": "..."
}
}
}
},
"templateProduct": {
"summary": "extractionMode: template, template: product",
"value": {
"timestamp": 1786985781147,
"apiStatus": "success",
"apiCode": 200,
"meta": {
"url": "https://testingurl.dev/scraping/ecommerce/product/1",
"device": "desktop",
"format": ["json"],
"fileOutput": false,
"blockAds": true,
"renderJS": true,
"stealth": false,
"waitTime": 1,
"extractionMode": "template",
"template": "product",
"proxyMode": "false",
"proxyUsed": false,
"test": { "id": "22c8fcbf-dcf9-42e5-aaec-a0a3df4b334a" }
},
"data": {
"json": {
"product": {
"title": "Vertex Air Laptop 107",
"brand": "Vertex",
"category": "laptops",
"url": "https://testingurl.dev/scraping/ecommerce/product/1",
"description": "Designed with a minimalist aesthetic.",
"aggregateRating": {
"ratingValue": 2,
"bestRating": 5,
"reviewCount": 19
},
"variants": [
{
"sku": "TU-1",
"price": { "amount": 86, "currency": "USD" },
"availability": { "inStock": true, "text": "https://schema.org/InStock" },
"images": [{ "url": "https://testingurl.dev/assets/placeholder-product.svg" }]
}
]
}
}
}
}
}
}
}
}
},
"400": {
"description": "Invalid URL.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BaseErrorResponseDto"
},
"example": {
"timestamp": 1700000000000,
"apiStatus": "failure",
"apiCode": 400,
"message": "INVALID_URL",
"details": "The URL must be a valid HTTP or HTTPS URL."
}
}
}
},
"422": {
"description": "Unable to connect to the target website.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BaseErrorResponseDto"
},
"example": {
"timestamp": 1700000000000,
"apiStatus": "failure",
"apiCode": 422,
"message": "UNABLE_TO_CONNECT",
"details": "The destination server could not be resolved, refused the connection, timed out, or is redirecting indefinitely."
}
}
}
},
"500": {
"description": "Crawling failed.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BaseErrorResponseDto"
},
"example": {
"timestamp": 1700000000000,
"apiStatus": "failure",
"apiCode": 500,
"message": "CRAWL_FAILED",
"details": "Our crawling service encountered an error while attempting to fetch data from the specified URL."
}
}
}
}
},
"summary": "Scrape a webpage with custom options",
"tags": ["api-tool"]
}
},
"/dnsrecord": {
"post": {
"description": "Look up A, AAAA, CNAME, MX, CAA, NS, SOA, SRV, and TXT records for any domain. Query every supported type in one call, or pass `types` to fetch only the ones you need.",
"operationId": "dnsRecord",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DnsRecordDto"
}
}
}
},
"responses": {
"200": {
"description": "Successfully retrieved DNS records",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DnsRecordResponseDto"
}
}
}
},
"400": {
"description": "Invalid URL.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BaseErrorResponseDto"
},
"example": {
"timestamp": 1700000000000,
"apiStatus": "failure",
"apiCode": 400,
"message": "INVALID_URL",
"details": "The URL must be a valid HTTP or HTTPS URL."
}
}
}
},
"500": {
"description": "DNS lookup failed.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BaseErrorResponseDto"
},
"example": {
"timestamp": 1700000000000,
"apiStatus": "failure",
"apiCode": 500,
"message": "DNS_LOOKUP_FAILED",
"details": "DNS lookup failed for the requested domain."
}
}
}
}
},
"summary": "Retrieve DNS records for a given domain",
"tags": ["api-tool"]
}
},
"/screenshot": {
"post": {
"description": "Capture a pixel-perfect screenshot of any URL as PNG, JPEG, or WebP. Supports full-page capture, device emulation, custom viewports, and CAPTCHA/cookie-banner bypass.",
"operationId": "screenshot",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ScreenshotDto"
}
}
}
},
"responses": {
"200": {
"description": "Successfully captured screenshot",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ScreenshotResponseDto"
}
}
}
},
"400": {
"description": "Invalid URL.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BaseErrorResponseDto"
},
"example": {
"timestamp": 1700000000000,
"apiStatus": "failure",
"apiCode": 400,
"message": "INVALID_URL",
"details": "The URL must be a valid HTTP or HTTPS URL."
}
}
}
},
"422": {
"description": "Unable to connect to the target website.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BaseErrorResponseDto"
},
"example": {
"timestamp": 1700000000000,
"apiStatus": "failure",
"apiCode": 422,
"message": "UNABLE_TO_CONNECT",
"details": "The destination server could not be resolved, refused the connection, timed out, or is redirecting indefinitely."
}
}
}
},
"500": {
"description": "Screenshot generation failed.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BaseErrorResponseDto"
},
"example": {
"timestamp": 1700000000000,
"apiStatus": "failure",
"apiCode": 500,
"message": "SCREENSHOT_FAILED",
"details": "Failed to process the request during browser automation."
}
}
}
}
},
"summary": "Capture a full-page screenshot of a website",
"tags": ["api-tool"]
}
},
"/up": {
"post": {
"description": "Check whether a website is reachable and returns a successful HTTP response. Ideal for uptime monitoring and pre-flight checks before running other tests.",
"operationId": "siteStatus",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SiteStatusDto"
}
}
}
},
"responses": {
"200": {
"description": "Site status retrieved successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SiteStatusResponseDto"
}
}
}
},
"400": {
"description": "Invalid URL.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BaseErrorResponseDto"
},
"example": {
"timestamp": 1700000000000,
"apiStatus": "failure",
"apiCode": 400,
"message": "INVALID_URL",
"details": "The URL must be a valid HTTP or HTTPS URL."
}
}
}
},
"429": {
"description": "Too many redirects.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BaseErrorResponseDto"
},
"example": {
"timestamp": 1700000000000,
"apiStatus": "failure",
"apiCode": 429,
"message": "TOO_MANY_REDIRECTS",
"details": "Exceeded the maximum number of redirects while checking the target website."
}
}
}
},
"500": {
"description": "Site status check failed.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BaseErrorResponseDto"
},
"example": {
"timestamp": 1700000000000,
"apiStatus": "failure",
"apiCode": 500,
"message": "SITE_STATUS_FAILED",
"details": "Failed to determine the availability or status of the target website."
}
}
}
}
},
"summary": "Check if a site is up or down",
"tags": ["api-tool"]
}
},
"/redirectcheck": {
"post": {
"description": "Trace the full redirect chain of a URL, including every intermediate hop, status code, and the final destination. Useful for auditing SEO redirects and link rot.",
"operationId": "redirectCheck",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RedirectCheckDto"
}
}
}
},
"responses": {
"200": {
"description": "Successfully retrieved redirect chain",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RedirectCheckResponseDto"
}
}
}
},
"400": {
"description": "Invalid URL.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BaseErrorResponseDto"
},
"example": {
"timestamp": 1700000000000,
"apiStatus": "failure",
"apiCode": 400,
"message": "INVALID_URL",
"details": "The URL must be a valid HTTP or HTTPS URL."
}
}
}
},
"429": {
"description": "Too many redirects.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BaseErrorResponseDto"
},
"example": {
"timestamp": 1700000000000,
"apiStatus": "failure",
"apiCode": 429,
"message": "TOO_MANY_REDIRECTS",
"details": "Exceeded the maximum number of redirects while resolving the target URL."
}
}
}
},
"500": {
"description": "Redirect check failed.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BaseErrorResponseDto"
},
"example": {
"timestamp": 1700000000000,
"apiStatus": "failure",
"apiCode": 500,
"message": "REDIRECT_CHECK_FAILED",
"details": "Unable to determine the redirect chain for the target URL."
}
}
}
}
},
"summary": "Check the redirection chain of a given URL",
"tags": ["api-tool"]
}
},
"/brokenlink": {
"post": {
"description": "Scan a webpage for broken links and report which URLs return errors, so you can fix dead links before they hurt SEO or user experience.",
"operationId": "brokenLink",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BrokenLinkDto"
}
}
}
},
"responses": {
"200": {
"description": "Successfully checked for broken links",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BrokenLinkResponseDto"
}
}
}
},
"400": {
"description": "Invalid URL.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BaseErrorResponseDto"
},
"example": {
"timestamp": 1700000000000,
"apiStatus": "failure",
"apiCode": 400,
"message": "INVALID_URL",
"details": "The URL must be a valid HTTP or HTTPS URL."
}
}
}
},
"422": {
"description": "Unable to connect to the target website.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BaseErrorResponseDto"
},
"example": {
"timestamp": 1700000000000,
"apiStatus": "failure",
"apiCode": 422,
"message": "UNABLE_TO_CONNECT",
"details": "The destination server could not be resolved, refused the connection, timed out, or is redirecting indefinitely."
}
}
}
}
},
"summary": "Check if a webpage contains broken links",
"tags": ["api-tool"]
}
},
"/url2pdf": {
"post": {
"description": "Convert any URL into a downloadable PDF document, with control over page orientation, margins, and scale. Useful for archiving pages or generating reports.",
"operationId": "url2Pdf",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Url2PdfDto"
}
}
}
},
"responses": {
"200": {
"description": "Successfully captured Url2Pdf",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Url2PdfResponseDto"
}
}
}
},
"400": {
"description": "Invalid URL.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BaseErrorResponseDto"
},
"example": {
"timestamp": 1700000000000,
"apiStatus": "failure",
"apiCode": 400,
"message": "INVALID_URL",
"details": "The URL must be a valid HTTP or HTTPS URL."
}
}
}
},
"422": {
"description": "Unable to connect to the target website.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BaseErrorResponseDto"
},
"example": {
"timestamp": 1700000000000,
"apiStatus": "failure",
"apiCode": 422,
"message": "UNABLE_TO_CONNECT",
"details": "The destination server could not be resolved, refused the connection, timed out, or is redirecting indefinitely."
}
}
}
},
"500": {
"description": "PDF conversion failed.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BaseErrorResponseDto"
},
"example": {
"timestamp": 1700000000000,
"apiStatus": "failure",
"apiCode": 500,
"message": "PDF_CONVERSION_FAILED",
"details": "Our PDF conversion service encountered an error while fetching the target URL."
}
}
}
}
},
"summary": "Capture a full-page Url2Pdf of a website",
"tags": ["api-tool"]
}
},
"/openport": {
"post": {
"description": "Scan a domain or IP for open TCP ports, either across the top N most common ports or a custom range you specify. Useful for surface-level network security audits and exposure checks.",
"operationId": "openPorts",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OpenPortDto"
}
}
}
},
"responses": {
"200": {
"description": "Open ports retrieved successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OpenPortResponseDto"
}
}
}
},
"400": {
"description": "Invalid URL.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BaseErrorResponseDto"
},
"example": {
"timestamp": 1700000000000,
"apiStatus": "failure",
"apiCode": 400,
"message": "INVALID_URL",
"details": "The URL must be a valid HTTP or HTTPS URL."
}
}
}
},
"408": {
"description": "Port scan timed out.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BaseErrorResponseDto"
},
"example": {
"timestamp": 1700000000000,
"apiStatus": "failure",
"apiCode": 408,
"message": "NMAP_TIMEOUT",
"details": "The port scan timed out before it could complete."
}
}
}
},
"500": {
"description": "Port scan failed.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BaseErrorResponseDto"
},
"example": {
"timestamp": 1700000000000,
"apiStatus": "failure",
"apiCode": 500,
"message": "PORT_SCAN_FAILED",
"details": "Our port scanning service encountered an unexpected error while attempting to scan the target."
}
}
}
}
},
"summary": "Scan a website for open ports",
"tags": ["api-tool"]
}
},
"/tlsscan": {
"post": {
"description": "Inspect a domain's TLS/SSL configuration, including which protocol versions are supported (from the deprecated and insecure SSLv2/SSLv3 through TLS 1.3) and certificate details, to catch expiring certificates and outdated, insecure configurations.",
"operationId": "tlsScan",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TlsScanDto"
}
}
}
},
"responses": {
"200": {
"description": "Successfully retrieved TLS scan information",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TlsScanResponseDto"
},
"example": {
"timestamp": 1786985154370,
"apiStatus": "success",
"apiCode": 200,
"meta": {
"url": "example.com",
"test": { "id": "25075387-6ffd-4779-94b5-2304d77c8f77" }
},
"data": {
"protocols": {
"ssl2": true,
"ssl3": true,
"tls10": true,
"tls11": true,
"tls12": true,
"tls13": false
},
"certificate": {
"commonName": "*.example.com",
"subjectAltName": "DNS:*.example.com, DNS:example.com",
"issuer": {
"country": "GB",
"organization": "Sectigo Limited",
"commonName": "Sectigo Public Server Authentication CA OV R36"
},
"expiry": "Sep 30 23:59:59 2026 GMT"
}
}
}
}
}
},
"400": {
"description": "Invalid URL.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BaseErrorResponseDto"
},
"example": {
"timestamp": 1700000000000,
"apiStatus": "failure",
"apiCode": 400,
"message": "INVALID_URL",
"details": "The URL must be a valid HTTP or HTTPS URL."
}
}
}
},
"422": {
"description": "TLS handshake failed.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BaseErrorResponseDto"
},
"example": {
"timestamp": 1700000000000,
"apiStatus": "failure",
"apiCode": 422,
"message": "TLS_HANDSHAKE_FAILED",
"details": "Unable to establish a TLS connection with the target server."
}
}
}
},
"500": {
"description": "TLS scan failed.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BaseErrorResponseDto"
},
"example": {
"timestamp": 1700000000000,
"apiStatus": "failure",
"apiCode": 500,
"message": "TLS_SCAN_FAILED",
"details": "Unable to complete the TLS scan for the target domain."
}
}
}
}
},
"summary": "Perform TLS scan for a given domain",
"tags": ["api-tool"]
}
},
"/loadtime": {
"post": {
"description": "Measure how long a webpage takes to fully load from a real browser. Pass `targetCountries` (up to 3 ISO country codes) to also test reachability from those locations via proxy alongside the default US server test, and compare results side by side.",
"operationId": "loadTime",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/LoadTimeDto"
},
"examples": {
"default": {
"summary": "Default",
"value": {
"url": "https://example.com"
}
},
"withProxy": {
"summary": "With proxy",
"value": {
"url": "https://example.com",
"proxyCountry": "gb"
}
},
"withTargetCountries": {
"summary": "With target countries",
"value": {
"url": "https://example.com",
"targetCountries": ["gb", "ca"]
}
}
}
}
}
},
"responses": {
"200": {
"description": "Load time retrieved successfully. Returns a single-location result by default, or a per-location breakdown when `targetCountries` is set.",
"content": {
"application/json": {
"schema": {
"oneOf": [
{ "$ref": "#/components/schemas/LoadTimeResponseDto" },
{ "$ref": "#/components/schemas/LoadTimeMultiLocationResponseDto" }
]
},
"examples": {
"singleLocation": {
"summary": "Default (single location)",
"value": {
"timestamp": 1783943217189,
"apiStatus": "success",
"apiCode": 200,
"message": "Site is reachable.",
"meta": {
"url": "https://example.com",
"followRedirect": true,
"redirectedURL": "https://example.com/",
"test": { "id": "mxqx9v9y0742lap6altwdteqd28t23nq" }
},
"data": {
"dns": 10,
"connect": 12,
"tls": 9,
"send": 19,
"wait": 86,
"total": 88,
"statusCode": 200,
"reasonPhrase": "OK"
}
}
},
"multiLocation": {
"summary": "targetCountries set (multi-location)",
"value": {
"timestamp": 1785938505112,
"apiStatus": "success",
"apiCode": 200,
"message": "Reachable from all 3 tested locations.",
"meta": {
"url": "https://logi.com",
"test": { "id": "cc20cf78-3bfb-4ad4-8e75-4be137f7fb3d" },
"targetCountries": ["us", "gb", "ca"],
"followRedirect": true
},
"summary": {
"reachable": ["us", "gb", "ca"]
},
"locations": [
{ "location": "us", "countryName": "United States", "status": "reachable", "data": {} },
{ "location": "gb", "countryName": "Great Britain", "status": "reachable", "data": {} },
{ "location": "ca", "countryName": "Canada", "status": "reachable", "data": {} }
]
}
}
}
}
}
},
"400": {
"description": "Invalid URL.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BaseErrorResponseDto"
},
"example": {
"timestamp": 1700000000000,
"apiStatus": "failure",
"apiCode": 400,
"message": "INVALID_URL",
"details": "The URL must be a valid HTTP or HTTPS URL."
}
}
}
},
"422": {
"description": "Unable to connect to the target website.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BaseErrorResponseDto"
},
"example": {
"timestamp": 1700000000000,
"apiStatus": "failure",
"apiCode": 422,
"message": "UNABLE_TO_CONNECT",
"details": "The destination server could not be resolved, refused the connection, timed out, or is redirecting indefinitely."
}
}
}
},
"500": {
"description": "Failed to measure page load time.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BaseErrorResponseDto"
},
"example": {
"timestamp": 1700000000000,
"apiStatus": "failure",
"apiCode": 500,
"message": "LOAD_TIME_FAILED",
"details": "Unable to measure the page load time for the target URL."
}
}
}
}
},
"summary": "Measure the page load time for a given URL",
"tags": ["api-tool"]
}
},
"/mixedcontent": {
"post": {
"description": "Scan an HTTPS page for insecure HTTP resources like images, scripts, or stylesheets that trigger browser security warnings and break the padlock icon.",
"operationId": "mixedContent",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/MixedContentDto"
}
}
}
},
"responses": {
"200": {
"description": "Site status retrieved successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/MixedContentResponseDto"
}
}
}
},
"400": {
"description": "Invalid URL.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BaseErrorResponseDto"
},
"example": {
"timestamp": 1700000000000,
"apiStatus": "failure",
"apiCode": 400,
"message": "INVALID_URL",
"details": "The URL must be a valid HTTP or HTTPS URL."
}
}
}
},
"422": {
"description": "Unable to connect to the target website.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BaseErrorResponseDto"
},
"example": {
"timestamp": 1700000000000,
"apiStatus": "failure",
"apiCode": 422,
"message": "UNABLE_TO_CONNECT",
"details": "The destination server could not be resolved, refused the connection, timed out, or is redirecting indefinitely."
}
}
}
},
"500": {
"description": "Failed to check for mixed content.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BaseErrorResponseDto"
},
"example": {
"timestamp": 1700000000000,
"apiStatus": "failure",
"apiCode": 500,
"message": "MIXED_CONTENT_CHECK_FAILED",
"details": "Unable to analyze the target webpage for mixed content."
}
}
}
}
},
"summary": "Check for mixed content on a site",
"tags": ["api-tool"]
}
},
"/dnssec": {
"post": {
"description": "Check whether DNSSEC is properly configured and validating for a domain, helping you confirm protection against DNS spoofing and cache poisoning attacks.",
"operationId": "dnsSec",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DnsSecDto"
}
}
}
},
"responses": {
"200": {
"description": "DNSSEC test result retrieved successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DnsSecResponseDto"
}
}
}
},
"400": {
"description": "Invalid URL.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BaseErrorResponseDto"
},
"example": {
"timestamp": 1700000000000,
"apiStatus": "failure",
"apiCode": 400,
"message": "INVALID_URL",
"details": "The URL must be a valid HTTP or HTTPS URL."
}
}
}
},
"500": {
"description": "DNSSEC check failed.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BaseErrorResponseDto"
},
"example": {
"timestamp": 1700000000000,
"apiStatus": "failure",
"apiCode": 500,
"message": "DNSSEC_CHECK_FAILED",
"details": "DNSSEC validation failed due to an internal processing error."
}
}
}
},
"502": {
"description": "DNSSEC query failed.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BaseErrorResponseDto"
},
"example": {
"timestamp": 1700000000000,
"apiStatus": "failure",
"apiCode": 502,
"message": "DNSSEC_QUERY_FAILED",
"details": "DNSSEC query failed for the requested domain."
}
}
}
},
"504": {
"description": "DNS server timed out.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BaseErrorResponseDto"
},
"example": {
"timestamp": 1700000000000,
"apiStatus": "failure",
"apiCode": 504,
"message": "DNSSEC_TIMEOUT",
"details": "DNSSEC query timed out while contacting the DNS server."
}
}
}
}
},
"summary": "Check if DNSSEC is enabled for a domain",
"tags": ["api-tool"]
}
},
"/mtr": {
"post": {
"description": "Run a My Traceroute (MTR) diagnostic between Geekflare and a target host, combining traceroute and ping to show packet loss and latency at each network hop.",
"operationId": "mtr",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/MtrDto"
}
}
}
},
"responses": {
"200": {
"description": "MTR test completed successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/MtrResponseDto"
}
}
}
},
"400": {
"description": "Invalid URL.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BaseErrorResponseDto"
},
"example": {
"timestamp": 1700000000000,
"apiStatus": "failure",
"apiCode": 400,
"message": "INVALID_URL",
"details": "The URL must be a valid HTTP or HTTPS URL."
}
}
}
},
"500": {
"description": "MTR is not installed.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BaseErrorResponseDto"
},
"example": {
"timestamp": 1700000000000,
"apiStatus": "failure",
"apiCode": 500,
"message": "MTR_NOT_FOUND",
"details": "The mtr command is not available on the server."
}
}
}
}
},
"summary": "Perform MTR (My Traceroute) network diagnostic test",
"tags": ["api-tool"]
}
},
"/ping": {
"post": {
"description": "Send ICMP ping requests to a URL or IP and return latency, packet loss, and round-trip time statistics — useful for quick reachability and network health checks.",
"operationId": "ping",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PingDto"
}
}
}
},
"responses": {
"200": {
"description": "Ping test completed successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PingResponseDto"
}
}
}
},
"400": {
"description": "Invalid URL.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BaseErrorResponseDto"
},
"example": {
"timestamp": 1700000000000,
"apiStatus": "failure",
"apiCode": 400,
"message": "INVALID_URL",
"details": "The URL must be a valid HTTP or HTTPS URL."
}
}
}
},
"504": {
"description": "Host is unreachable.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BaseErrorResponseDto"
},
"example": {
"timestamp": 1700000000000,
"apiStatus": "failure",
"apiCode": 504,
"message": "TCP_PING_FAILED",
"details": "All TCP ping attempts to the target host failed."
}
}
}
}
},
"summary": "Perform ICMP Ping test on a given URL or IP",
"tags": ["api-tool"]
}
},
"/lighthouse": {
"post": {
"description": "Run a Google Lighthouse audit for performance, SEO, accessibility, and best practices, with support for advanced flags via the `parameters` array.",
"operationId": "lighthouse",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/LighthouseDto"
}
}
}
},
"responses": {
"200": {
"description": "Successfully ran Lighthouse audit",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/LighthouseResponseDto"
}
}
}
},
"400": {
"description": "Invalid URL.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BaseErrorResponseDto"
},
"example": {
"timestamp": 1700000000000,
"apiStatus": "failure",
"apiCode": 400,
"message": "INVALID_URL",
"details": "The URL must be a valid HTTP or HTTPS URL."
}
}
}
},
"422": {
"description": "Unable to connect to the target website.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BaseErrorResponseDto"
},
"example": {
"timestamp": 1700000000000,
"apiStatus": "failure",
"apiCode": 422,
"message": "UNABLE_TO_CONNECT",
"details": "The destination server could not be resolved, refused the connection, timed out, or is redirecting indefinitely."
}
}
}
},
"500": {
"description": "Lighthouse audit failed.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BaseErrorResponseDto"
},
"example": {
"timestamp": 1700000000000,
"apiStatus": "failure",
"apiCode": 500,
"message": "LIGHTHOUSE_UNEXPECTED",
"details": "Unexpected Lighthouse audit failure."
}
}
}
}
},
"summary": "Run Lighthouse audit on a website",
"tags": ["api-tool"]
}
},
"/search": {
"post": {
"description": "Structured search results from the web or news. Strips out ads and HTML noise to provide pure data in JSON, Markdown, or HTML. Fully supports AI-grounded answers, search-with-scrape, image search, and targeted Web or News sourcing.",
"operationId": "search",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SearchRequestDto"
}
}
}
},
"responses": {
"200": {
"description": "Search results (format depends on request)",
"content": {
"application/json": {
"schema": {
"oneOf": [
{
"$ref": "#/components/schemas/SearchResponseDto"
},
{
"$ref": "#/components/schemas/ImageSearchResponseDto"
},
{
"$ref": "#/components/schemas/SearchMarkdownResponseDto"
},
{
"$ref": "#/components/schemas/SearchHtmlResponseDto"
},
{
"$ref": "#/components/schemas/GroundedAnswerResponseDto"
}
]
}
}
}
},
"400": {
"description": "Invalid URL.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BaseErrorResponseDto"
},
"example": {
"timestamp": 1700000000000,
"apiStatus": "failure",
"apiCode": 400,
"message": "INVALID_URL",
"details": "The URL must be a valid HTTP or HTTPS URL."
}
}
}
},
"422": {
"description": "Unable to connect to the target website.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BaseErrorResponseDto"
},
"example": {
"timestamp": 1700000000000,
"apiStatus": "failure",
"apiCode": 422,
"message": "UNABLE_TO_CONNECT",
"details": "The destination server could not be resolved, refused the connection, timed out, or is redirecting indefinitely."
}
}
}
},
"500": {
"description": "Search failed.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BaseErrorResponseDto"
},
"example": {
"timestamp": 1700000000000,
"apiStatus": "failure",
"apiCode": 500,
"message": "SEARCH_FAILED",
"details": "Our search service encountered an error while processing the request."
}
}
}
}
},
"summary": "Search API for AI Agents & LLMs",
"tags": ["api-tool"]
}
},
"/brand": {
"post": {
"description": "Retrieve structured brand information for a website domain, including key brand details useful for identifying and understanding a website or company.",
"operationId": "brand",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BrandDto"
}
}
}
},
"responses": {
"200": {
"description": "Successfully retrieved brand data",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BrandResponseDto"
}
}
}
},
"400": {
"description": "Invalid URL.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BaseErrorResponseDto"
},
"example": {
"timestamp": 1700000000000,
"apiStatus": "failure",
"apiCode": 400,
"message": "INVALID_URL",
"details": "The URL must be a valid HTTP or HTTPS URL."
}
}
}
}
},
"summary": "Get brand data for a domain",
"tags": ["api-tool"]
}
}
},
"components": {
"securitySchemes": {
"x-api-key": {
"type": "apiKey",
"in": "header",
"name": "x-api-key",
"description": "API Key required for all endpoints"
},
"bearer-token": {
"scheme": "bearer",
"bearerFormat": "JWT",
"type": "http",
"description": "JWT token for Admin endpoints"
},
"gf_auth_session": {
"type": "apiKey",
"in": "cookie",
"name": "gf_auth_session",
"description": "IDP session cookie"
},
"x-internal-key": {
"type": "apiKey",
"in": "header",
"name": "x-internal-key",
"description": "Internal API key (Swagger only)"
}
},
"schemas": {
"MetaScrapeDto": {
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Target URL",
"example": "https://example.com"
},
"device": {
"type": "string",
"description": "Device type to emulate. Defaults to desktop.",
"example": "desktop",
"enum": ["desktop", "mobile"],
"default": "desktop"
},
"blockAds": {
"type": "boolean",
"description": "Whether to block ads",
"example": true,
"default": true
},
"renderJS": {
"type": "boolean",
"description": "Whether to render JavaScript",
"example": true,
"default": true
},
"proxyCountry": {
"type": "string",
"description": "Proxy country code to route the request",
"example": "us"
},
"format": {
"type": "string",
"description": "Format of the scraped result. Defaults to html.",
"example": "json",
"enum": ["markdown", "json"],
"default": "json"
},
"fileOutput": {
"type": "boolean",
"description": "Whether to get response in file format",
"example": false,
"default": false
}
},
"required": ["url"]
},
"TestMetaDto": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Unique test identifier",
"example": "mxqx9v9y0742lap6altwdteqd28t23nq"
}
},
"required": ["id"]
},
"MetaScrapeMetaDto": {
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "The target URL that was scraped",
"example": "https://example.com"
},
"device": {
"type": "string",
"description": "Device type used",
"example": "desktop",
"enum": ["desktop", "mobile"]
},
"format": {
"type": "string",
"description": "Output format of the result",
"example": "json",
"enum": ["markdown", "json"]
},
"fileOutput": {
"type": "boolean",
"description": "Whether to get response in file format",
"example": false
},
"blockAds": {
"type": "boolean",
"description": "Whether ads were blocked",
"example": true
},
"renderJS": {
"type": "boolean",
"description": "Whether JavaScript was rendered",
"example": true
},
"proxyCountry": {
"type": "string",
"description": "Proxy country used, if any"
},
"test": {
"description": "Test details object",
"allOf": [
{
"$ref": "#/components/schemas/TestMetaDto"
}
]
}
},
"required": [
"url",
"device",
"format",
"fileOutput",
"blockAds",
"renderJS",
"test"
]
},
"MetaScrapeResponseDto": {
"type": "object",
"properties": {
"timestamp": {
"type": "number",
"description": "Timestamp of the request in milliseconds",
"example": 1788414740025
},
"apiStatus": {
"type": "string",
"description": "API status message",
"example": "success",
"enum": ["success", "failure"]
},
"apiCode": {
"type": "number",
"description": "API status code",
"example": 200
},
"meta": {
"description": "Metadata about the request",
"allOf": [
{
"$ref": "#/components/schemas/MetaScrapeMetaDto"
}
]
},
"data": {
"description": "Scraped data (URL or inline content depending on output)",
"example": "https://cdn.geekflare.com/tests/webscraping/ZuyhINuAZPQQabbN",
"oneOf": [
{
"type": "string"
},
{
"type": "object"
}
]
}
},
"required": ["timestamp", "apiStatus", "apiCode", "meta", "data"]
},
"BaseErrorResponseDto": {
"type": "object",
"properties": {
"timestamp": {
"type": "number",
"description": "Timestamp of the request in milliseconds",
"example": 1778737930991
},
"apiStatus": {
"type": "string",
"description": "API status message",
"example": "success",
"enum": ["success", "failure"]
},
"apiCode": {
"type": "number",
"description": "API status code",
"example": 200
},
"message": {
"type": "string",
"description": "Error message",
"example": "Invalid URL provided"
},
"details": {
"type": "string",
"description": "Detailed error information",
"example": "The URL must be a valid HTTP or HTTPS URL"
}
},
"required": ["timestamp", "apiStatus", "apiCode", "message"]
},
"PromptAiPromptDto": {
"type": "object",
"properties": {
"type": {
"type": "string",
"description": "AI extraction mode",
"enum": [
"prompt",
"schema",
"listing",
"summary",
"sentiment",
"keywords"
],
"example": "prompt"
},
"query": {
"type": "string",
"description": "Open-ended question about the page",
"example": "What is the return policy?"
}
},
"required": ["type", "query"]
},
"SchemaAiPromptDto": {
"type": "object",
"properties": {
"type": {
"type": "string",
"description": "AI extraction mode",
"enum": [
"prompt",
"schema",
"listing",
"summary",
"sentiment",
"keywords"
],
"example": "prompt"
},
"schema": {
"type": "object",
"description": "JSON Schema-like object describing fields to extract",
"example": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"price": {
"type": "number"
}
}
}
}
},
"required": ["type", "schema"]
},
"ListingAiPromptDto": {
"type": "object",
"properties": {
"type": {
"type": "string",
"description": "AI extraction mode",
"enum": [
"prompt",
"schema",
"listing",
"summary",
"sentiment",
"keywords"
],
"example": "prompt"
},
"itemSchema": {
"type": "object",
"description": "JSON Schema-like object describing each item to extract from a listing/category page",
"example": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"price": {
"type": "number"
}
}
}
},
"maxItems": {
"type": "number",
"description": "Maximum number of items to extract",
"default": 20,
"example": 20
}
},
"required": ["type", "itemSchema"]
},
"SummaryAiPromptDto": {
"type": "object",
"properties": {
"type": {
"type": "string",
"description": "AI extraction mode",
"enum": [
"prompt",
"schema",
"listing",
"summary",
"sentiment",
"keywords"
],
"example": "prompt"
},
"style": {
"type": "string",
"description": "Summary style",
"enum": ["paragraph", "bullets", "tldr"],
"default": "paragraph"
},
"focus": {
"type": "string",
"description": "Only summarize the parts of the content relevant to this focus area",
"example": "pricing"
},
"maxLength": {
"type": "number",
"description": "Sentence count (paragraph/tldr) or bullet count (bullets)",
"default": 5,
"example": 5
}
},
"required": ["type"]
},
"SentimentAiPromptDto": {
"type": "object",
"properties": {
"type": {
"type": "string",
"description": "AI extraction mode",
"enum": [
"prompt",
"schema",
"listing",
"summary",
"sentiment",
"keywords"
],
"example": "prompt"
},
"aspects": {
"description": "Aspects to score individually (aspect-based sentiment). If omitted, only overall sentiment is returned.",
"example": ["sound quality", "battery life", "comfort", "price"],
"type": "array",
"items": {
"type": "string"
}
}
},
"required": ["type"]
},
"KeywordsAiPromptDto": {
"type": "object",
"properties": {
"type": {
"type": "string",
"description": "AI extraction mode",
"enum": [
"prompt",
"schema",
"listing",
"summary",
"sentiment",
"keywords"
],
"example": "prompt"
},
"maxKeywords": {
"type": "number",
"description": "Maximum number of keywords to return",
"default": 10,
"example": 10
},
"includeEntities": {
"type": "boolean",
"description": "Also extract named entities (organizations, people, dates, laws, locations)",
"default": false
}
},
"required": ["type"]
},
"DefaultExtractionFieldDto": {
"type": "object",
"properties": {
"title": {
"type": "string",
"description": "Title/key of the extracted field",
"example": "Product Name"
},
"value": {
"type": "object",
"description": "Static value to assign to this field",
"example": "Some hardcoded string"
}
},
"required": ["title", "value"]
},
"SelectorExtractionFieldDto": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Field name in the extracted JSON",
"example": "title"
},
"selector": {
"type": "string",
"description": "Selector or XPath to extract value",
"example": "h1.product-title"
},
"type": {
"type": "string",
"description": "Type of data to extract",
"example": "text"
},
"attribute": {
"type": "string",
"description": "If type=attr, specify attribute name",
"example": "href"
},
"fields": {
"description": "Nested fields",
"type": "array",
"items": {
"$ref": "#/components/schemas/SelectorExtractionFieldDto"
}
}
},
"required": ["name", "selector", "type"]
},
"ExtractionSchemaDto": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Name/Label for this extraction schema",
"example": "Product Schema"
},
"baseSelector": {
"type": "string",
"description": "Base selector for scoping extraction (css/xpath only)",
"example": ".product"
},
"fields": {
"type": "array",
"description": "List of fields to extract",
"items": {
"oneOf": [
{
"$ref": "#/components/schemas/DefaultExtractionFieldDto"
},
{
"$ref": "#/components/schemas/SelectorExtractionFieldDto"
}
]
}
}
},
"required": ["name", "fields"]
},
"WebScrapeDto": {
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Target URL",
"example": "https://example.com"
},
"device": {
"type": "string",
"description": "Device type to emulate. Defaults to desktop.",
"example": "desktop",
"enum": ["desktop", "mobile"],
"default": "desktop"
},
"blockAds": {
"type": "boolean",
"description": "Whether to block ads",
"example": true,
"default": true
},
"renderJS": {
"type": "boolean",
"description": "Whether to render JavaScript. If omitted, rendering is automatic: the page is fetched without a browser first, and JavaScript is only rendered if the page needs it. Set explicitly to true or false to force rendering on or off."
},
"proxyMode": {
"description": "Whether to route the request through a proxy. `false` never uses a proxy (default), `auto` tries without a proxy first and retries through one if the site blocks the request, `true` always uses a proxy.",
"default": false,
"oneOf": [
{
"type": "boolean",
"example": true
},
{
"type": "string",
"enum": ["auto"],
"example": "auto"
}
]
},
"proxyCountry": {
"type": "string",
"description": "Proxy country code to route the request. Used when a proxy is active (proxyMode is auto or true).",
"example": "us"
},
"format": {
"type": "array",
"description": "Format(s) of the scraped result. Comma-separated or array. Defaults to html-llm. markdown is recommended for most use cases.",
"example": "markdown,json",
"default": ["html-llm"],
"items": {
"type": "string",
"enum": [
"html",
"markdown",
"json",
"markdown-llm",
"html-llm",
"text",
"text-llm"
]
}
},
"fileOutput": {
"type": "boolean",
"description": "Whether to get response in file format",
"example": false,
"default": false
},
"stealth": {
"type": "boolean",
"description": "Enable stealth mode to bypass basic bot detection (removes webdriver signals, patches navigator properties)",
"example": false,
"default": false
},
"waitTime": {
"type": "number",
"description": "Seconds to wait after page load before capturing content. Helps bypass lazy-loaded content and bot checks.",
"example": 2.5,
"default": 0
},
"extractionMode": {
"type": "string",
"description": "Extraction mode (only used if format=json). Set to `template` to use a ready-made extraction template instead of a custom schema — see the `template` field.",
"example": "default",
"enum": ["default", "cssSchema", "xpathSchema", "template"],
"default": "default"
},
"template": {
"type": "string",
"description": "Extraction template to use when extractionMode is `template` (ignored otherwise, and has no effect unless extractionMode is set to `template`). Accepts `product` (extracts product info: title, brand, pricing, availability, images, ratings) or `contact` (extracts contact info: company, locations, emails, phones, social profiles)."
},
"extractionSchema": {
"description": "Extraction schema (optional in default mode, required in css/xpath)",
"examples": {
"default": {
"summary": "Default Mode Schema",
"value": {
"name": "Quick Fields",
"fields": [
{
"title": "Category",
"value": "Electronics"
},
{
"title": "Country",
"value": "India"
}
]
}
},
"cssSchema": {
"summary": "CSS Schema",
"value": {
"name": "Product Schema",
"baseSelector": ".product",
"fields": [
{
"name": "title",
"selector": "h1.product-title",
"type": "text"
},
{
"name": "price",
"selector": ".price",
"type": "text"
}
]
}
},
"xpathSchema": {
"summary": "XPath Schema",
"value": {
"name": "Article Schema",
"baseSelector": "//div[@class='article']",
"fields": [
{
"name": "title",
"selector": "//h1/text()",
"type": "text"
}
]
}
}
},
"allOf": [
{
"$ref": "#/components/schemas/ExtractionSchemaDto"
}
]
},
"aiPrompt": {
"description": "Ask AI to extract or analyze the scraped page. Always runs against the Markdown of the page regardless of the format field. Adds +6 credits on top of the base scraping cost.",
"oneOf": [
{
"$ref": "#/components/schemas/PromptAiPromptDto"
},
{
"$ref": "#/components/schemas/SchemaAiPromptDto"
},
{
"$ref": "#/components/schemas/ListingAiPromptDto"
},
{
"$ref": "#/components/schemas/SummaryAiPromptDto"
},
{
"$ref": "#/components/schemas/SentimentAiPromptDto"
},
{
"$ref": "#/components/schemas/KeywordsAiPromptDto"
}
],
"discriminator": {
"propertyName": "type",
"mapping": {
"prompt": "#/components/schemas/PromptAiPromptDto",
"schema": "#/components/schemas/SchemaAiPromptDto",
"listing": "#/components/schemas/ListingAiPromptDto",
"summary": "#/components/schemas/SummaryAiPromptDto",
"sentiment": "#/components/schemas/SentimentAiPromptDto",
"keywords": "#/components/schemas/KeywordsAiPromptDto"
}
},
"examples": {
"prompt": {
"summary": "Open-ended Question",
"value": {
"type": "prompt",
"query": "What is the return policy?"
}
},
"schema": {
"summary": "Custom JSON Schema",
"value": {
"type": "schema",
"schema": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"price": {
"type": "number"
},
"currency": {
"type": "string"
},
"inStock": {
"type": "boolean"
}
}
}
}
},
"product": {
"summary": "Product Extraction",
"value": {
"type": "product"
}
},
"listing": {
"summary": "Listing Extraction",
"value": {
"type": "listing",
"itemSchema": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"price": {
"type": "number"
}
}
},
"maxItems": 20
}
},
"summary": {
"summary": "Summary",
"value": {
"type": "summary",
"style": "bullets",
"focus": "pricing"
}
},
"contact": {
"summary": "Contact Info",
"value": {
"type": "contact"
}
},
"sentiment": {
"summary": "Sentiment Analysis",
"value": {
"type": "sentiment",
"aspects": [
"sound quality",
"battery life",
"comfort",
"price"
]
}
},
"keywords": {
"summary": "Keywords & Entities",
"value": {
"type": "keywords",
"maxKeywords": 10,
"includeEntities": true
}
}
}
}
},
"required": ["url"]
},
"WebScrapeMetaDto": {
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "The target URL that was scraped",
"example": "https://example.com"
},
"device": {
"type": "string",
"description": "Device type used",
"example": "desktop",
"enum": ["desktop", "mobile"]
},
"format": {
"type": "array",
"description": "Output format(s) of the result",
"example": ["html-llm"],
"items": {
"type": "string",
"enum": [
"html",
"markdown",
"json",
"markdown-llm",
"html-llm",
"text",
"text-llm"
]
}
},
"fileOutput": {
"type": "boolean",
"description": "Whether to get response in file format",
"example": false
},
"blockAds": {
"type": "boolean",
"description": "Whether ads were blocked",
"example": true
},
"renderJS": {
"type": "boolean",
"description": "Whether JavaScript was rendered for this request (resolved automatically unless explicitly set)",
"example": true
},
"stealth": {
"type": "boolean",
"description": "Whether stealth mode was enabled",
"example": false
},
"proxyMode": {
"type": "string",
"description": "Proxy mode requested for this request, echoed as a string (\"false\", \"auto\", or \"true\")",
"example": "false"
},
"proxyUsed": {
"type": "boolean",
"description": "Whether a proxy was actually used for this request. Always matches proxyMode when it's `false` or `true`; depends on the outcome of the auto-retry when proxyMode is `auto`.",
"example": false
},
"waitTime": {
"type": "number",
"description": "Seconds to wait after page load before capturing content. Helps bypass lazy-loaded content and bot checks.",
"example": 2.5,
"default": 0
},
"proxyCountry": {
"type": "string",
"description": "Proxy country used, if any"
},
"extractionMode": {
"type": "string",
"description": "Extraction mode (only used if format=json)",
"example": "default"
},
"template": {
"type": "string",
"description": "Extraction template used, if extractionMode was `template`",
"example": "product",
"enum": ["product", "contact"]
},
"extractionSchema": {
"description": "Extraction schema (optional in default mode, required in css/xpath)",
"examples": {
"default": {
"summary": "Default Mode Schema",
"value": {
"name": "Quick Fields",
"fields": [
{
"title": "Category",
"value": "Electronics"
},
{
"title": "Country",
"value": "India"
}
]
}
}
},
"allOf": [
{
"$ref": "#/components/schemas/ExtractionSchemaDto"
}
]
},
"test": {
"description": "Test details object",
"allOf": [
{
"$ref": "#/components/schemas/TestMetaDto"
}
]
},
"aiPromptType": {
"type": "string",
"description": "The aiPrompt.type used for this request, if any",
"example": "prompt"
}
},
"required": [
"url",
"device",
"format",
"fileOutput",
"blockAds",
"renderJS",
"stealth",
"proxyMode",
"proxyUsed",
"waitTime",
"extractionMode",
"extractionSchema",
"test"
]
},
"WebScrapeResponseDto": {
"type": "object",
"properties": {
"timestamp": {
"type": "number",
"description": "Timestamp of the request in milliseconds",
"example": 1788414740025
},
"apiStatus": {
"type": "string",
"description": "API status message",
"example": "success",
"enum": ["success", "failure"]
},
"apiCode": {
"type": "number",
"description": "API status code",
"example": 200
},
"meta": {
"description": "Metadata about the request",
"allOf": [
{
"$ref": "#/components/schemas/WebScrapeMetaDto"
}
]
},
"data": {
"description": "Scraped data (URL or inline content depending on output)",
"example": "https://example.com/9bulgk075ed9m3vhua5vcrp0.html",
"oneOf": [
{
"type": "string"
},
{
"type": "object"
}
]
},
"aiResult": {
"type": "object",
"description": "AI extraction/analysis result. Shape depends on aiPrompt.type. Omitted when aiPrompt was not provided."
}
},
"required": ["timestamp", "apiStatus", "apiCode", "meta", "data"]
},
"DnsRecordDto": {
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Target URL",
"example": "https://example.com"
},
"types": {
"type": "array",
"description": "List of DNS record types to query. If omitted, all supported types will be returned.",
"example": ["A", "MX"],
"items": {
"type": "string",
"enum": [
"A",
"AAAA",
"CNAME",
"MX",
"CAA",
"NS",
"SOA",
"SRV",
"TXT"
]
}
}
},
"required": ["url"]
},
"DnsMetaDto": {
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "The target URL that was scraped",
"example": "https://example.com"
},
"types": {
"type": "string",
"description": "List of DNS record types to query. If omitted, all supported types will be returned.",
"example": ["A", "MX"],
"enum": [
"A",
"AAAA",
"CNAME",
"MX",
"CAA",
"NS",
"SOA",
"SRV",
"TXT"
]
},
"test": {
"description": "Test details object",
"allOf": [
{
"$ref": "#/components/schemas/TestMetaDto"
}
]
}
},
"required": ["url", "types", "test"]
},
"DnsRecordResponseDto": {
"type": "object",
"properties": {
"timestamp": {
"type": "number",
"description": "Timestamp of the request in milliseconds",
"example": 1788414740025
},
"apiStatus": {
"type": "string",
"description": "API status message",
"example": "success",
"enum": ["success", "failure"]
},
"apiCode": {
"type": "number",
"description": "API status code",
"example": 200
},
"meta": {
"description": "Metadata about the request.",
"example": {
"url": "example.com",
"types": ["A", "MX"],
"test": {
"id": "zmkqoxxu075dwn4u61yoqhq2rwo0029m"
}
},
"allOf": [
{
"$ref": "#/components/schemas/DnsMetaDto"
}
]
},
"data": {
"type": "object",
"description": "DNS records grouped by type.",
"example": {
"A": ["172.67.70.213", "104.26.11.88", "104.26.10.88"],
"MX": [
{
"exchange": "alt3.aspmx.l.google.com",
"priority": 10
},
{
"exchange": "aspmx.l.google.com",
"priority": 1
}
]
}
}
},
"required": ["timestamp", "apiStatus", "apiCode", "meta", "data"]
},
"ScreenshotDto": {
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Target URL",
"example": "https://example.com"
},
"device": {
"type": "string",
"description": "Device type to emulate. Defaults to desktop.",
"example": "desktop",
"enum": ["desktop", "mobile"],
"default": "desktop"
},
"proxyCountry": {
"type": "string",
"description": "Proxy country code to route the request",
"example": "us"
},
"type": {
"type": "string",
"description": "File type of screenshot. Defaults to png.",
"example": "png",
"enum": ["png", "jpeg", "webp"],
"default": "png"
},
"fullPage": {
"type": "boolean",
"description": "Take full-page screenshot",
"example": true,
"default": false
},
"blockAds": {
"type": "boolean",
"description": "Block ads on the page",
"example": true,
"default": true
},
"hideCookie": {
"type": "boolean",
"description": "Hide cookie popups",
"example": true,
"default": true
},
"skipCaptcha": {
"type": "boolean",
"description": "Try to bypass captcha",
"example": true,
"default": true
},
"addTimestamp": {
"type": "boolean",
"description": "Add timestamp watermark",
"example": true,
"default": false
},
"pageHeight": {
"type": "number",
"description": "Height of the page (for partial screenshot)",
"example": 2000,
"minimum": 100,
"maximum": 5000
},
"viewportWidth": {
"type": "number",
"description": "Width of the viewport",
"example": 1280,
"minimum": 320,
"maximum": 3840
},
"viewportHeight": {
"type": "number",
"description": "Height of the viewport",
"example": 800,
"minimum": 240,
"maximum": 2160
},
"theme": {
"type": "string",
"description": "Theme to use for rendering",
"example": "auto",
"enum": ["light", "dark", "auto"],
"default": "auto"
},
"removeBackground": {
"type": "boolean",
"description": "Remove background from screenshot",
"example": false
},
"highlightLinks": {
"type": "boolean",
"description": "Highlight links on the page",
"example": false
},
"delay": {
"type": "number",
"description": "Delay before taking screenshot (in seconds)",
"example": 2,
"minimum": 0,
"maximum": 10
},
"disableAnimations": {
"type": "boolean",
"description": "Disable animations on the page",
"example": false
},
"quality": {
"type": "number",
"description": "Image quality (for JPEG/WEBP)",
"example": 90,
"minimum": 10,
"maximum": 100
},
"scaleFactor": {
"type": "number",
"description": "Device scale factor",
"example": 1,
"minimum": 0.1,
"maximum": 5
},
"captureBeyondViewport": {
"type": "boolean",
"description": "Capture beyond viewport if possible",
"example": true
},
"selector": {
"type": "string",
"description": "CSS selector to capture only a specific element on the page. Supports class (.), ID (#), and attribute selectors.",
"example": ".hero-section"
},
"fallbackToFullPage": {
"type": "boolean",
"description": "If true and the selector is not found, falls back to a full-page screenshot instead of returning an error. Default: false.",
"example": false,
"default": false
},
"inline": {
"type": "boolean",
"description": "If true, includes a Base64-encoded image and data URI in the response. Useful for AI agents and LLMs that cannot fetch URLs. Default: false.",
"example": false,
"default": false
}
},
"required": ["url"]
},
"ScreenshotMetaDto": {
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "The target URL that was captured",
"example": "https://example.com"
},
"type": {
"type": "string",
"description": "File type of screenshot",
"example": "png"
},
"device": {
"type": "string",
"description": "Device type used",
"example": "desktop"
},
"fullPage": {
"type": "boolean",
"description": "Whether full-page screenshot was taken",
"example": false
},
"blockAds": {
"type": "boolean",
"description": "Whether ads were blocked",
"example": false
},
"hideCookie": {
"type": "boolean",
"description": "Whether cookie popups were hidden",
"example": false
},
"skipCaptcha": {
"type": "boolean",
"description": "Whether captcha was bypassed",
"example": false
},
"addTimestamp": {
"type": "boolean",
"description": "Whether timestamp watermark was added",
"example": false
},
"proxyCountry": {
"type": "string",
"description": "Proxy country used, if any"
},
"pageHeight": {
"type": "number",
"description": "Height of the page",
"example": 2000
},
"viewportWidth": {
"type": "number",
"description": "Width of the viewport",
"example": 1280
},
"viewportHeight": {
"type": "number",
"description": "Height of the viewport",
"example": 800
},
"theme": {
"type": "string",
"description": "Theme used",
"example": "auto"
},
"removeBackground": {
"type": "boolean",
"description": "Whether background was removed",
"example": false
},
"highlightLinks": {
"type": "boolean",
"description": "Whether links were highlighted",
"example": false
},
"delay": {
"type": "number",
"description": "Delay before screenshot",
"example": 2
},
"disableAnimations": {
"type": "boolean",
"description": "Whether animations were disabled",
"example": false
},
"quality": {
"type": "number",
"description": "Image quality (JPEG/WEBP)",
"example": 90
},
"scaleFactor": {
"type": "number",
"description": "Device scale factor",
"example": 1
},
"captureBeyondViewport": {
"type": "boolean",
"description": "Capture beyond viewport",
"example": true
},
"selector": {
"type": "string",
"description": "CSS selector that was targeted, if provided",
"example": ".hero-section"
},
"fallbackToFullPage": {
"type": "boolean",
"description": "Whether fallback to full-page was enabled",
"example": false
},
"inline": {
"type": "boolean",
"description": "Whether inline base64 output was requested",
"example": false
},
"test": {
"description": "Test details",
"allOf": [
{
"$ref": "#/components/schemas/TestMetaDto"
}
]
}
},
"required": [
"url",
"type",
"device",
"fullPage",
"blockAds",
"hideCookie",
"skipCaptcha",
"addTimestamp",
"test"
]
},
"ScreenshotInlineDto": {
"type": "object",
"properties": {
"base64": {
"type": "string",
"description": "Raw Base64-encoded image string",
"example": "iVBORw0KGgoAAAANSUhEUgAA..."
},
"dataUri": {
"type": "string",
"description": "Data URI — ready to embed in an tag or pass directly to an LLM",
"example": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..."
}
},
"required": ["base64", "dataUri"]
},
"ScreenshotResponseDto": {
"type": "object",
"properties": {
"timestamp": {
"type": "number",
"description": "Timestamp of the request in milliseconds",
"example": 1788414740025
},
"apiStatus": {
"type": "string",
"description": "API status message",
"example": "success",
"enum": ["success", "failure"]
},
"apiCode": {
"type": "number",
"description": "API status code",
"example": 200
},
"meta": {
"description": "Metadata about the request",
"allOf": [
{
"$ref": "#/components/schemas/ScreenshotMetaDto"
}
]
},
"data": {
"type": "string",
"description": "URL of the captured screenshot",
"example": "https://geekflare.com/tests/screenshot/kbi6d206g87ituahb7icwtpr.png"
},
"inline": {
"description": "Inline Base64 image data. Present only when the request included `inline: true`.",
"allOf": [
{
"$ref": "#/components/schemas/ScreenshotInlineDto"
}
]
}
},
"required": ["timestamp", "apiStatus", "apiCode", "meta", "data"]
},
"SiteStatusDto": {
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Target URL",
"example": "https://example.com"
},
"proxyCountry": {
"type": "string",
"description": "Proxy country code to route the request",
"example": "us"
},
"followRedirect": {
"type": "boolean",
"description": "Whether to follow redirects when checking site status",
"example": false,
"default": false
}
},
"required": ["url"]
},
"SiteStatusMetaDto": {
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "The target URL checked",
"example": "https://example.com"
},
"followRedirect": {
"type": "boolean",
"description": "Whether redirects were followed",
"example": true
},
"redirectedURL": {
"type": "object",
"description": "Final redirected URL (if applicable)",
"example": "https://www.example.com/home"
},
"proxyCountry": {
"type": "string",
"description": "Proxy country used (if any)",
"example": "US"
},
"test": {
"description": "Test details object",
"allOf": [
{
"$ref": "#/components/schemas/TestMetaDto"
}
]
}
},
"required": ["url", "followRedirect", "proxyCountry", "test"]
},
"SiteStatusResponseDto": {
"type": "object",
"properties": {
"timestamp": {
"type": "number",
"description": "Timestamp of the request in milliseconds",
"example": 1788414740025
},
"apiStatus": {
"type": "string",
"description": "API status message",
"example": "success",
"enum": ["success", "failure"]
},
"apiCode": {
"type": "number",
"description": "API status code",
"example": 200
},
"message": {
"type": "string",
"description": "Indicates the current status of the site. It can either be \"Site is up\" or \"Unable to reach the URL.\"",
"example": "Site is up"
},
"meta": {
"description": "Metadata about the site status check.",
"example": {
"url": "example.com",
"proxyCountry": "US",
"followRedirect": true,
"redirectedURL": "https://www.example.com",
"test": {
"id": "zmkqoxxu075dwn4u61yoqhq2rwo0029m"
}
},
"allOf": [
{
"$ref": "#/components/schemas/SiteStatusMetaDto"
}
]
},
"data": {
"type": "object",
"description": "HTTP status information from the site check.",
"example": {
"statusCode": 200,
"reasonPhrase": "OK"
}
}
},
"required": [
"timestamp",
"apiStatus",
"apiCode",
"message",
"meta",
"data"
]
},
"RedirectCheckDto": {
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Target URL",
"example": "https://example.com"
},
"proxyCountry": {
"type": "string",
"description": "Proxy country code to route the request",
"example": "us"
}
},
"required": ["url"]
},
"RedirectCheckMetaDto": {
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "The original URL checked",
"example": "example.com"
},
"proxyCountry": {
"type": "object",
"description": "Proxy country used (if any)",
"example": "US"
},
"test": {
"description": "Test details object",
"allOf": [
{
"$ref": "#/components/schemas/TestMetaDto"
}
]
}
},
"required": ["url", "proxyCountry", "test"]
},
"RedirectHopDto": {
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "The URL at this hop",
"example": "http://example.com/"
},
"status": {
"type": "number",
"description": "HTTP status code at this hop",
"example": 301
},
"headers": {
"description": "Response headers",
"example": [
{
"name": "location",
"value": "https://example.com/"
},
{
"name": "date",
"value": "Mon, 29 Aug 2022 07:17:31 GMT"
}
],
"type": "array",
"items": {
"type": "string"
}
}
},
"required": ["url", "status", "headers"]
},
"RedirectCheckResponseDto": {
"type": "object",
"properties": {
"timestamp": {
"type": "number",
"description": "Timestamp of the request in milliseconds",
"example": 1788414740025
},
"apiStatus": {
"type": "string",
"description": "API status message",
"example": "success",
"enum": ["success", "failure"]
},
"apiCode": {
"type": "number",
"description": "API status code",
"example": 200
},
"meta": {
"description": "Metadata about the redirection check.",
"example": {
"url": "example.com",
"proxyCountry": "United States",
"test": {
"id": "667zexrk0aaiabz2rx95b2cxm0khc2s0"
}
},
"allOf": [
{
"$ref": "#/components/schemas/RedirectCheckMetaDto"
}
]
},
"data": {
"description": "List of redirection hops with status and headers.",
"type": "array",
"items": {
"$ref": "#/components/schemas/RedirectHopDto"
}
}
},
"required": ["timestamp", "apiStatus", "apiCode", "meta", "data"]
},
"BrokenLinkDto": {
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Target URL",
"example": "https://example.com"
},
"proxyCountry": {
"type": "string",
"description": "Proxy country code to route the request",
"example": "us"
},
"followRedirect": {
"type": "boolean",
"description": "Whether to follow redirects when checking site status",
"example": false,
"default": false
}
},
"required": ["url"]
},
"BrokenLinkMetaDto": {
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "The target URL checked for broken links",
"example": "example.com"
},
"proxyCountry": {
"type": "string",
"description": "Proxy country used for this request",
"example": "United States"
},
"followRedirect": {
"type": "boolean",
"description": "Whether redirection was followed",
"example": true
},
"redirectedURL": {
"type": "string",
"description": "Final URL after redirection (if any)",
"example": "https://example.com/"
},
"test": {
"description": "Test details object",
"allOf": [
{
"$ref": "#/components/schemas/TestMetaDto"
}
]
}
},
"required": [
"url",
"proxyCountry",
"followRedirect",
"redirectedURL",
"test"
]
},
"BrokenLinkSummaryDto": {
"type": "object",
"properties": {
"total": {
"type": "number",
"description": "Total number of links checked",
"example": 5
},
"successful": {
"type": "number",
"description": "Number of successful links (2xx status codes)",
"example": 2
},
"redirects": {
"type": "number",
"description": "Number of redirect links (3xx status codes)",
"example": 2
},
"broken": {
"type": "number",
"description": "Number of broken links (4xx status codes and DNS/network failures)",
"example": 1
},
"serverError": {
"type": "number",
"description": "Number of server errors (5xx status codes)",
"example": 0
},
"forbidden": {
"type": "number",
"description": "Number of forbidden links (403 status codes)",
"example": 0
},
"timedOut": {
"type": "number",
"description": "Number of timed-out links",
"example": 0
}
},
"required": [
"total",
"successful",
"redirects",
"broken",
"serverError",
"forbidden",
"timedOut"
]
},
"BrokenLinkResponseDto": {
"type": "object",
"properties": {
"timestamp": {
"type": "number",
"description": "Timestamp of the request in milliseconds",
"example": 1788414740025
},
"apiStatus": {
"type": "string",
"description": "API status message",
"example": "success",
"enum": ["success", "failure"]
},
"apiCode": {
"type": "number",
"description": "API status code",
"example": 200
},
"message": {
"type": "string",
"description": "Human-readable message about the broken link scan result",
"example": "No broken links found."
},
"meta": {
"description": "Metadata about the broken link request",
"example": {
"url": "example.com",
"proxyCountry": "United States",
"followRedirect": true,
"redirectedURL": "https://example.com/",
"test": {
"id": "wf0b7yrn05br8xtwple7ngj7hhxzvl2e"
}
},
"allOf": [
{
"$ref": "#/components/schemas/BrokenLinkMetaDto"
}
]
},
"summary": {
"description": "Summary of link check results categorized by status",
"example": {
"total": 5,
"successful": 2,
"redirects": 2,
"broken": 1,
"serverError": 0
},
"allOf": [
{
"$ref": "#/components/schemas/BrokenLinkSummaryDto"
}
]
},
"data": {
"description": "List of links found on the page and their HTTP status",
"example": [
{
"link": "https://example.com/",
"status": 200
},
{
"link": "https://example.com/articles",
"status": 200
}
],
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"timestamp",
"apiStatus",
"apiCode",
"message",
"meta",
"summary",
"data"
]
},
"MarginDto": {
"type": "object",
"properties": {
"top": {
"type": "number",
"description": "Top margin in mm",
"example": 25.4
},
"bottom": {
"type": "number",
"description": "Bottom margin in mm",
"example": 25.4
},
"right": {
"type": "number",
"description": "Right margin in mm",
"example": 25.4
},
"left": {
"type": "number",
"description": "Left margin in mm",
"example": 25.4
}
}
},
"Url2PdfDto": {
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Target URL",
"example": "https://example.com"
},
"device": {
"type": "string",
"description": "Device type to emulate. Defaults to desktop.",
"example": "desktop",
"enum": ["desktop", "mobile"],
"default": "desktop"
},
"proxyCountry": {
"type": "string",
"description": "Proxy country code to route the request",
"example": "us"
},
"format": {
"type": "string",
"description": "Paper format",
"example": "a4",
"enum": [
"letter",
"legal",
"a0",
"a1",
"a2",
"a3",
"a4",
"a5",
"a6"
],
"default": "a4"
},
"orientation": {
"type": "string",
"description": "Orientation",
"example": "portrait",
"enum": ["portrait", "landscape"],
"default": "portrait"
},
"margin": {
"description": "Margins in mm",
"allOf": [
{
"$ref": "#/components/schemas/MarginDto"
}
]
},
"scale": {
"type": "number",
"description": "Rendering scale between 0–2",
"example": 1.5,
"default": 1
},
"hideCookie": {
"type": "boolean",
"description": "Hide cookie popups",
"example": false,
"default": false
},
"skipCaptcha": {
"type": "boolean",
"description": "Try to skip captcha",
"example": false,
"default": false
},
"addTimestamp": {
"type": "boolean",
"description": "Add timestamp watermark",
"example": false,
"default": false
}
},
"required": ["url"]
},
"Url2PdfMetaDto": {
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "The target URL",
"example": "https://example.com"
},
"device": {
"type": "string",
"description": "Device type used",
"example": "desktop"
},
"proxyCountry": {
"type": "string",
"description": "Proxy country used, if any"
},
"format": {
"type": "string",
"description": "Paper format",
"example": "letter"
},
"orientation": {
"type": "string",
"description": "Orientation",
"example": "landscape"
},
"margin": {
"description": "Margins in mm",
"allOf": [
{
"$ref": "#/components/schemas/MarginDto"
}
]
},
"scale": {
"type": "number",
"description": "Rendering scale",
"example": 1.5
},
"test": {
"description": "Test details",
"allOf": [
{
"$ref": "#/components/schemas/TestMetaDto"
}
]
}
},
"required": ["url", "device", "format", "orientation", "scale", "test"]
},
"Url2PdfResponseDto": {
"type": "object",
"properties": {
"timestamp": {
"type": "number",
"description": "Timestamp of the request in milliseconds",
"example": 1788414740025
},
"apiStatus": {
"type": "string",
"description": "API status message",
"example": "success",
"enum": ["success", "failure"]
},
"apiCode": {
"type": "number",
"description": "API status code",
"example": 200
},
"meta": {
"description": "Metadata about the request",
"allOf": [
{
"$ref": "#/components/schemas/Url2PdfMetaDto"
}
]
},
"data": {
"type": "string",
"description": "Generated PDF URL",
"example": "https://api-assets.example.com/tests/pdf/o5jiqf08bmp93jsll7vb24vs.pdf"
}
},
"required": ["timestamp", "apiStatus", "apiCode", "meta", "data"]
},
"OpenPortDto": {
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "The URL, hostname, IPv4, or IPv6 address to be checked",
"example": "https://example.com"
},
"topPorts": {
"type": "number",
"description": "Scan only the top N ports (optional)",
"example": 100,
"enum": [50, 100, 500, 1000, 5000]
},
"portRanges": {
"type": "string",
"description": "Custom port ranges to scan, e.g., \"80,443,1000-1010\"",
"example": "80,443,1000-1010"
}
},
"required": ["url"]
},
"OpenPortMetaDto": {
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "The scanned URL",
"example": "https://example.com"
},
"topPorts": {
"type": "number",
"description": "Top ports scanned (if any)",
"example": 100,
"enum": [50, 100, 500, 1000, 5000]
},
"portRanges": {
"type": "string",
"description": "Custom port ranges scanned (if any)",
"example": "80,443,1000-1010"
},
"test": {
"description": "Test details object",
"allOf": [
{
"$ref": "#/components/schemas/TestMetaDto"
}
]
}
},
"required": ["url", "test"]
},
"OpenPortResponseDto": {
"type": "object",
"properties": {
"timestamp": {
"type": "number",
"description": "Timestamp of the request in milliseconds",
"example": 1788414740025
},
"apiStatus": {
"type": "string",
"description": "API status message",
"example": "success",
"enum": ["success", "failure"]
},
"apiCode": {
"type": "number",
"description": "API status code",
"example": 200
},
"meta": {
"description": "Metadata about the request",
"allOf": [
{
"$ref": "#/components/schemas/OpenPortMetaDto"
}
]
},
"data": {
"description": "List of open ports found",
"type": "array",
"items": {
"type": "number"
}
}
},
"required": ["timestamp", "apiStatus", "apiCode", "meta", "data"]
},
"TlsScanDto": {
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Target URL",
"example": "https://example.com"
}
},
"required": ["url"]
},
"TlsScanMetaDto": {
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "The target URL checked for TLS support",
"example": "example.com"
},
"test": {
"description": "Test metadata object",
"example": {
"id": "40zt4but04y07ccn4pov5fiolzrxbxdg"
},
"allOf": [
{
"$ref": "#/components/schemas/TestMetaDto"
}
]
}
},
"required": ["url", "test"]
},
"TlsProtocolsDto": {
"type": "object",
"properties": {
"ssl2": {
"type": "boolean",
"description": "Whether the deprecated and insecure SSL 2.0 is supported",
"example": false
},
"ssl3": {
"type": "boolean",
"description": "Whether the deprecated and insecure SSL 3.0 is supported",
"example": false
},
"tls10": {
"type": "boolean",
"description": "Whether TLS 1.0 is supported",
"example": false
},
"tls11": {
"type": "boolean",
"description": "Whether TLS 1.1 is supported",
"example": false
},
"tls12": {
"type": "boolean",
"description": "Whether TLS 1.2 is supported",
"example": true
},
"tls13": {
"type": "boolean",
"description": "Whether TLS 1.3 is supported",
"example": true
}
},
"required": ["ssl2", "ssl3", "tls10", "tls11", "tls12", "tls13"]
},
"TlsCertificateIssuerDto": {
"type": "object",
"properties": {
"country": {
"type": "string",
"description": "Issuer country",
"example": "US"
},
"organization": {
"type": "string",
"description": "Issuer organization",
"example": "Cloudflare, Inc."
},
"commonName": {
"type": "string",
"description": "Issuer common name",
"example": "Cloudflare Inc ECC CA-3"
}
},
"required": ["country", "organization", "commonName"]
},
"TlsCertificateChainEntryDto": {
"type": "object",
"properties": {
"commonName": {
"type": "string",
"description": "Common name of this certificate in the chain"
},
"issuerCommonName": {
"type": "string",
"description": "Common name of this certificate's issuer"
},
"fingerprint": {
"type": "string",
"description": "SHA-1 fingerprint of this certificate"
}
},
"required": ["commonName", "issuerCommonName", "fingerprint"]
},
"TlsCertificateChainDto": {
"type": "object",
"properties": {
"length": {
"type": "number",
"description": "Number of certificates in the chain as presented by the server"
},
"complete": {
"type": "boolean",
"description": "Whether the chain terminates in a self-signed root (i.e. is not missing an intermediate)"
},
"certificates": {
"description": "Ordered list of certificates from leaf to root",
"type": "array",
"items": {
"$ref": "#/components/schemas/TlsCertificateChainEntryDto"
}
}
},
"required": ["length", "complete", "certificates"]
},
"TlsForwardSecrecyDto": {
"type": "object",
"properties": {
"negotiatedCipher": {
"type": "object",
"description": "Cipher suite negotiated on the primary handshake",
"nullable": true
},
"ephemeralKeyType": {
"type": "object",
"description": "Ephemeral key exchange type (e.g. ECDH, DH), null if the cipher does not provide forward secrecy",
"nullable": true
},
"ephemeralKeySize": {
"type": "object",
"description": "Ephemeral key size in bits",
"nullable": true
}
},
"required": ["negotiatedCipher", "ephemeralKeyType", "ephemeralKeySize"]
},
"TlsCertificateDto": {
"type": "object",
"properties": {
"commonName": {
"type": "string",
"description": "Common name (CN) on the certificate",
"example": "sni.cloudflaressl.com"
},
"subjectAltName": {
"type": "string",
"description": "Subject Alternative Names (SAN)",
"example": "DNS:*.example.com, DNS:sni.cloudflaressl.com, DNS:example.com"
},
"issuer": {
"description": "Issuer details",
"allOf": [
{
"$ref": "#/components/schemas/TlsCertificateIssuerDto"
}
]
},
"expiry": {
"type": "string",
"description": "Certificate expiry date",
"example": "Jun 6 23:59:59 2023 GMT"
},
"validFrom": {
"type": "string",
"description": "Certificate valid-from date"
},
"isExpired": {
"type": "boolean",
"description": "Whether the certificate has expired"
},
"isNotYetValid": {
"type": "boolean",
"description": "Whether the certificate is not yet valid"
},
"hostnameMatches": {
"type": "boolean",
"description": "Whether the requested hostname matches the certificate (CN/SAN)"
},
"selfSigned": {
"type": "boolean",
"description": "Whether the leaf certificate is self-signed"
},
"keyBits": {
"type": "object",
"description": "Public key size in bits, null if not an RSA key",
"nullable": true
},
"weakKey": {
"type": "object",
"description": "Whether the key size is considered weak (RSA < 2048 bits), null if not applicable",
"nullable": true
},
"weakSignatureAlgorithm": {
"type": "object",
"description": "Whether the certificate uses a weak signature algorithm (SHA-1/MD5); heuristic OID scan, null if undeterminable",
"nullable": true
},
"chain": {
"description": "Certificate chain analysis",
"allOf": [
{
"$ref": "#/components/schemas/TlsCertificateChainDto"
}
]
},
"forwardSecrecy": {
"description": "Forward secrecy signal from the negotiated handshake",
"allOf": [
{
"$ref": "#/components/schemas/TlsForwardSecrecyDto"
}
]
},
"trusted": {
"type": "boolean",
"description": "Whether the chain validates against Node/OpenSSL's built-in trust store"
},
"authorizationError": {
"type": "object",
"description": "Node TLS authorization error code/message if not trusted, null otherwise",
"nullable": true
}
},
"required": [
"commonName",
"subjectAltName",
"issuer",
"expiry",
"validFrom",
"isExpired",
"isNotYetValid",
"hostnameMatches",
"selfSigned",
"keyBits",
"weakKey",
"weakSignatureAlgorithm",
"chain",
"forwardSecrecy",
"trusted",
"authorizationError"
]
},
"TlsVulnerabilitiesDto": {
"type": "object",
"properties": {
"poodle": {
"type": "object",
"description": "POODLE (SSLv3 padding oracle) exposure and TLS_FALLBACK_SCSV support"
},
"drown": {
"type": "object",
"description": "DROWN exposure, simplified to SSLv2 support (full check requires cross-server key reuse analysis)"
},
"freak": {
"type": "object",
"description": "FREAK — whether the server accepts EXPORT-grade RSA cipher suites"
},
"logjam": {
"type": "object",
"description": "LOGJAM — whether the server negotiates a DHE group under 1024 bits"
},
"sweet32": {
"type": "object",
"description": "SWEET32 — whether the server negotiates 3DES/64-bit block ciphers"
},
"rc4": {
"type": "object",
"description": "Whether the server accepts RC4 cipher suites"
},
"nullCipher": {
"type": "object",
"description": "Whether the server accepts NULL-encryption cipher suites"
},
"anonymousCipher": {
"type": "object",
"description": "Whether the server accepts anonymous (unauthenticated) cipher suites"
},
"crime": {
"type": "object",
"description": "CRIME — whether the server accepts TLS-level (DEFLATE) compression"
}
},
"required": [
"poodle",
"drown",
"freak",
"logjam",
"sweet32",
"rc4",
"nullCipher",
"anonymousCipher",
"crime"
]
},
"TlsAdvisoryDto": {
"type": "object",
"properties": {
"breach": {
"type": "object",
"description": "BREACH is an HTTP-layer attack, not a TLS property — this is advisory only, not a vulnerability verdict"
},
"secureRenegotiation": {
"type": "object",
"description": "Secure renegotiation (RFC 5746) support signal — absence does not necessarily mean vulnerable"
},
"ocspStapling": {
"type": "object",
"description": "Whether the server stapled an OCSP response during the handshake"
}
},
"required": ["breach", "secureRenegotiation", "ocspStapling"]
},
"TlsScanDataDto": {
"type": "object",
"properties": {
"protocols": {
"description": "Protocols supported",
"allOf": [
{
"$ref": "#/components/schemas/TlsProtocolsDto"
}
]
},
"certificate": {
"description": "Certificate details",
"allOf": [
{
"$ref": "#/components/schemas/TlsCertificateDto"
}
]
},
"vulnerabilities": {
"description": "Category A vulnerability findings (definitive pass/fail)",
"allOf": [
{
"$ref": "#/components/schemas/TlsVulnerabilitiesDto"
}
]
},
"advisory": {
"description": "Category B advisory signals (informational, not a verdict)",
"allOf": [
{
"$ref": "#/components/schemas/TlsAdvisoryDto"
}
]
}
},
"required": ["protocols", "certificate", "vulnerabilities", "advisory"]
},
"TlsScanResponseDto": {
"type": "object",
"properties": {
"timestamp": {
"type": "number",
"description": "Timestamp of the request in milliseconds",
"example": 1788414740025
},
"apiStatus": {
"type": "string",
"description": "API status message",
"example": "success",
"enum": ["success", "failure"]
},
"apiCode": {
"type": "number",
"description": "API status code",
"example": 200
},
"meta": {
"description": "Metadata about the TLS scan request",
"example": {
"url": "example.com",
"test": {
"id": "40zt4but04y07ccn4pov5fiolzrxbxdg"
}
},
"allOf": [
{
"$ref": "#/components/schemas/TlsScanMetaDto"
}
]
},
"data": {
"description": "TLS scan result data",
"example": {
"protocols": {
"ssl2": false,
"ssl3": false,
"tls10": false,
"tls11": false,
"tls12": true,
"tls13": true
},
"certificate": {
"commonName": "sni.cloudflaressl.com",
"subjectAltName": "DNS:*.example.com, DNS:sni.cloudflaressl.com, DNS:example.com",
"issuer": {
"country": "US",
"organization": "Cloudflare, Inc.",
"commonName": "Cloudflare Inc ECC CA-3"
},
"expiry": "Jun 6 23:59:59 2023 GMT"
}
},
"allOf": [
{
"$ref": "#/components/schemas/TlsScanDataDto"
}
]
}
},
"required": ["timestamp", "apiStatus", "apiCode", "meta", "data"]
},
"LoadTimeDto": {
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Target URL",
"example": "https://example.com"
},
"followRedirect": {
"type": "boolean",
"description": "Whether to follow redirects when checking site status",
"example": false,
"default": false
},
"proxyCountry": {
"type": "string",
"description": "Proxy country code to route the request",
"example": "us"
},
"targetCountries": {
"type": "array",
"description": "Test the URL from up to 3 additional locations via proxy, alongside the default US server test. Each entry is an ISO alpha-2 country code. When set, the response includes a per-location reachability breakdown instead of a single result.",
"example": ["gb", "ca"],
"maxItems": 3,
"items": {
"type": "string"
}
}
},
"required": ["url"]
},
"LoadTimeMetaDto": {
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "The tested URL",
"example": "https://example.com"
},
"proxyCountry": {
"type": "string",
"description": "Proxy country used for the test",
"example": "us"
},
"followRedirect": {
"type": "boolean",
"description": "Indicates if redirects were followed during the test",
"example": true
},
"redirectedURL": {
"type": "string",
"description": "Final URL after redirection (if any)",
"example": "https://example.com/"
},
"test": {
"description": "Metadata about the test execution",
"allOf": [
{
"$ref": "#/components/schemas/TestMetaDto"
}
]
}
},
"required": ["url", "redirectedURL", "test"]
},
"TimingsDto": {
"type": "object",
"properties": {
"dns": {
"type": "number",
"description": "Time spent in DNS lookup (ms)",
"example": 21
},
"connect": {
"type": "number",
"description": "Time to establish TCP connection (ms)",
"example": 15
},
"tls": {
"type": "number",
"description": "Time to complete TLS handshake (ms)",
"example": 40
},
"send": {
"type": "number",
"description": "Time to send request (ms)",
"example": 1
},
"wait": {
"type": "number",
"description": "Server processing time (ms)",
"example": 457
},
"ttfb": {
"type": "number",
"description": "Time to First Byte - calculated as dns+connect+tls+send+wait (ms)",
"example": 534
},
"download": {
"type": "number",
"description": "Time to download response body (ms)",
"example": 4
},
"total": {
"type": "number",
"description": "Total load time (ms)",
"example": 538
},
"redirectDuration": {
"type": "number",
"description": "Time spent in redirects before reaching final URL (ms)",
"example": 0
}
},
"required": [
"dns",
"connect",
"tls",
"send",
"wait",
"ttfb",
"download",
"total",
"redirectDuration"
]
},
"NetworkDto": {
"type": "object",
"properties": {
"protocol": {
"type": "string",
"description": "The actual HTTP protocol used (e.g. h2, h3, http/1.1, http/1.0)",
"example": "h2"
},
"remoteIp": {
"type": "string",
"description": "Remote IP address of the server",
"example": "1.1.1.1"
},
"bytesRead": {
"type": "number",
"description": "Total bytes read from the response",
"example": 15400
}
},
"required": ["protocol", "bytesRead"]
},
"ProtocolSupportDto": {
"type": "object",
"properties": {
"http10": {
"type": "boolean",
"description": "Whether HTTP/1.0 is supported",
"example": false
},
"http11": {
"type": "boolean",
"description": "Whether HTTP/1.1 is supported",
"example": true
},
"http2": {
"type": "boolean",
"description": "Whether HTTP/2 is supported",
"example": true
},
"http3": {
"type": "boolean",
"description": "Whether HTTP/3 is supported",
"example": false
},
"http3SupportedVersion": {
"description": "HTTP/3 supported versions if available",
"example": ["h3-29", "h3"],
"type": "array",
"items": {
"type": "string"
}
}
},
"required": ["http10", "http11", "http2", "http3"]
},
"LoadTimeDataDto": {
"type": "object",
"properties": {
"dns": {
"type": "number",
"description": "Time spent in DNS lookup (ms)",
"example": 10
},
"connect": {
"type": "number",
"description": "Time to establish TCP connection (ms)",
"example": 12
},
"tls": {
"type": "number",
"description": "Time to complete TLS handshake (ms)",
"example": 9
},
"send": {
"type": "number",
"description": "Time to send request (ms)",
"example": 19
},
"wait": {
"type": "number",
"description": "Time waiting for response (ms)",
"example": 86
},
"total": {
"type": "number",
"description": "Total load time (ms)",
"example": 88
},
"statusCode": {
"type": "number",
"description": "HTTP status code of the response",
"example": 404
},
"reasonPhrase": {
"type": "string",
"description": "HTTP reason phrase",
"example": "Not Found"
},
"timings": {
"description": "Detailed timing breakdown",
"allOf": [
{
"$ref": "#/components/schemas/TimingsDto"
}
]
},
"network": {
"description": "Network information",
"allOf": [
{
"$ref": "#/components/schemas/NetworkDto"
}
]
},
"headers": {
"type": "object",
"description": "Response headers as key-value pairs",
"example": {
"server": "cloudflare",
"content-type": "text/html; charset=utf-8",
"cache-control": "no-cache"
}
},
"protocolSupport": {
"description": "HTTP protocol support information",
"allOf": [
{
"$ref": "#/components/schemas/ProtocolSupportDto"
}
]
}
},
"required": [
"dns",
"connect",
"tls",
"send",
"wait",
"total",
"statusCode",
"reasonPhrase",
"timings",
"network",
"headers",
"protocolSupport"
]
},
"LoadTimeResponseDto": {
"type": "object",
"properties": {
"timestamp": {
"type": "number",
"description": "Timestamp of the request in milliseconds",
"example": 1787223157468
},
"apiStatus": {
"type": "string",
"description": "API status message",
"example": "success",
"enum": ["success", "failure"]
},
"apiCode": {
"type": "number",
"description": "API status code",
"example": 200
},
"message": {
"type": "string",
"description": "Overall message about site reachability",
"example": "Site is reachable."
},
"meta": {
"description": "Metadata about the load time test",
"allOf": [
{
"$ref": "#/components/schemas/LoadTimeMetaDto"
}
]
},
"data": {
"description": "Comprehensive site load time metrics",
"allOf": [
{
"$ref": "#/components/schemas/LoadTimeDataDto"
}
]
}
},
"required": ["timestamp", "apiStatus", "apiCode", "meta", "data"]
},
"LoadTimeMultiLocationMetaDto": {
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "The tested URL",
"example": "https://logi.com"
},
"test": {
"description": "Metadata about the test execution",
"allOf": [
{
"$ref": "#/components/schemas/TestMetaDto"
}
]
},
"targetCountries": {
"type": "array",
"description": "The full list of locations tested: the default US server plus every requested targetCountries entry",
"example": ["us", "gb", "ca"],
"items": {
"type": "string"
}
},
"followRedirect": {
"type": "boolean",
"description": "Indicates if redirects were followed during the test",
"example": true
}
},
"required": ["url", "test", "targetCountries"]
},
"LoadTimeLocationResultDto": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "ISO alpha-2 country code for this test location",
"example": "gb"
},
"countryName": {
"type": "string",
"description": "Full country name for this test location",
"example": "Great Britain"
},
"status": {
"type": "string",
"description": "Whether the site was reachable from this location",
"example": "reachable",
"enum": ["reachable", "unreachable"]
},
"data": {
"type": "object",
"description": "Load time metrics for this location, same structure as the single-location `data` object",
"additionalProperties": true
}
},
"required": ["location", "countryName", "status", "data"]
},
"LoadTimeMultiLocationResponseDto": {
"type": "object",
"description": "Returned instead of LoadTimeResponseDto when `targetCountries` is set on the request",
"properties": {
"timestamp": {
"type": "number",
"description": "Timestamp of the request in milliseconds",
"example": 1787223157468
},
"apiStatus": {
"type": "string",
"description": "API status message",
"example": "success",
"enum": ["success", "failure"]
},
"apiCode": {
"type": "number",
"description": "API status code",
"example": 200
},
"message": {
"type": "string",
"description": "Overall summary of reachability across all tested locations",
"example": "Reachable from all 3 tested locations."
},
"meta": {
"description": "Metadata about the multi-location test",
"allOf": [
{
"$ref": "#/components/schemas/LoadTimeMultiLocationMetaDto"
}
]
},
"summary": {
"type": "object",
"description": "Locations grouped by reachability outcome",
"properties": {
"reachable": {
"type": "array",
"description": "Locations from which the site was reachable",
"example": ["us", "gb", "ca"],
"items": {
"type": "string"
}
}
}
},
"locations": {
"type": "array",
"description": "Per-location test results, including the default US server test",
"items": {
"$ref": "#/components/schemas/LoadTimeLocationResultDto"
}
}
},
"required": ["timestamp", "apiStatus", "apiCode", "message", "meta", "summary", "locations"]
},
"MixedContentDto": {
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Target URL",
"example": "https://example.com"
},
"followRedirect": {
"type": "boolean",
"description": "Whether to follow redirects when checking site status",
"example": false,
"default": false
},
"proxyCountry": {
"type": "string",
"description": "Proxy country code to route the request",
"example": "us"
}
},
"required": ["url"]
},
"MixedContentMetaDto": {
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "The tested URL",
"example": "https://example.com"
},
"proxyCountry": {
"type": "string",
"description": "Country used for proxy",
"example": "United States"
},
"followRedirect": {
"type": "boolean",
"description": "Indicates if redirects should be followed",
"example": true
},
"redirectedURL": {
"type": "string",
"description": "Final URL after redirection (if any)",
"example": "https://example.com/"
},
"test": {
"description": "Metadata about the test execution",
"allOf": [
{
"$ref": "#/components/schemas/TestMetaDto"
}
]
}
},
"required": ["url", "test"]
},
"MixedContentDataDto": {
"type": "object",
"properties": {
"insecure": {
"description": "List of insecure (HTTP) resources found on the page",
"example": [
"http://example.com/style.css",
"http://example.com/script.js"
],
"type": "array",
"items": {
"type": "string"
}
},
"secure": {
"description": "List of secure (HTTPS) resources found on the page",
"example": [
"https://example.com/",
"https://fonts.googleapis.com/css?family=Open+Sans",
"data:image/svg+xml;base64,PHN2ZyB4bWxucz0i..."
],
"type": "array",
"items": {
"type": "string"
}
}
},
"required": ["insecure", "secure"]
},
"MixedContentResponseDto": {
"type": "object",
"properties": {
"timestamp": {
"type": "number",
"description": "Timestamp of the request in milliseconds",
"example": 1788414740025
},
"apiStatus": {
"type": "string",
"description": "API status message",
"example": "success",
"enum": ["success", "failure"]
},
"apiCode": {
"type": "number",
"description": "API status code",
"example": 200
},
"message": {
"type": "string",
"description": "Indicates whether mixed content found or not. It can either be \"Mixed content(s) found.\" or \"No mixed content found.\"",
"example": "Mixed content(s) found."
},
"meta": {
"description": "Metadata about the mixed content test",
"allOf": [
{
"$ref": "#/components/schemas/MixedContentMetaDto"
}
]
},
"data": {
"description": "Contains either an array of all resources (when no mixed content) or an object with insecure/secure arrays (when mixed content found)",
"oneOf": [
{
"type": "array",
"items": {
"type": "string"
},
"description": "Simple array of all resources when no mixed content found",
"example": [
"https://example.com/",
"https://example.com/style.css",
"https://example.com/script.js"
]
},
{
"$ref": "#/components/schemas/MixedContentDataDto"
}
]
}
},
"required": [
"timestamp",
"apiStatus",
"apiCode",
"message",
"meta",
"data"
]
},
"DnsSecDto": {
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Target URL",
"example": "https://example.com"
}
},
"required": ["url"]
},
"DnsSecMetaDto": {
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "The tested domain name",
"example": "example.com"
},
"test": {
"description": "Metadata about the test execution",
"allOf": [
{
"$ref": "#/components/schemas/TestMetaDto"
}
]
}
},
"required": ["url", "test"]
},
"DnsSecDataDto": {
"type": "object",
"properties": {
"isEnabled": {
"type": "boolean",
"description": "Indicates if DNSSEC is enabled for the domain",
"example": true
},
"dnskey": {
"description": "List of DNSKEY records if DNSSEC is enabled",
"example": [
"DNSKEY 256 3 13 oJMRESz5E4gYzS/q6XDrvU1qMPYIjCWzJaOau8XNEZeqCYKD5ar0IRd8 KqXXFJkqmVfRvMGPmM1x8fGAa2XhSA=="
],
"type": "array",
"items": {
"type": "string"
}
},
"rrsig": {
"description": "List of RRSIG records if DNSSEC is enabled",
"example": [
"RRSIG DNSKEY 13 2 3600 20251124121323 20250924121323 2371 geekflare.com. LUeqKWfw4GcaqSaCbFT7ik6mTgFdWsRdVzn1hHGSwMGZ4HuwlVFB3e1K 9Os+4DnxyYNkfWkBHJcBfFN7e4snHg=="
],
"type": "array",
"items": {
"type": "string"
}
}
},
"required": ["isEnabled"]
},
"DnsSecResponseDto": {
"type": "object",
"properties": {
"timestamp": {
"type": "number",
"description": "Timestamp of the request in milliseconds",
"example": 1788414740025
},
"apiStatus": {
"type": "string",
"description": "API status message",
"example": "success",
"enum": ["success", "failure"]
},
"apiCode": {
"type": "number",
"description": "API status code",
"example": 200
},
"meta": {
"description": "Metadata about the DNSSEC test",
"allOf": [
{
"$ref": "#/components/schemas/DnsSecMetaDto"
}
]
},
"data": {
"description": "DNSSEC test result data",
"allOf": [
{
"$ref": "#/components/schemas/DnsSecDataDto"
}
]
}
},
"required": ["timestamp", "apiStatus", "apiCode", "meta", "data"]
},
"MtrDto": {
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Target URL",
"example": "https://example.com"
},
"followRedirect": {
"type": "boolean",
"description": "Whether to follow redirects when checking site status",
"example": false,
"default": false
},
"proxyCountry": {
"type": "string",
"description": "Proxy country code to route the request",
"example": "us"
}
},
"required": ["url"]
},
"MtrMetaDto": {
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "The tested URL or IP address",
"example": "example.com"
},
"proxyCountry": {
"type": "string",
"description": "Country used for proxy",
"example": "United States"
},
"followRedirect": {
"type": "boolean",
"description": "Indicates if redirects should be followed",
"example": true
},
"redirectedURL": {
"type": "string",
"description": "Final URL after redirection (if any)",
"example": "https://example.com/"
},
"test": {
"description": "Metadata about the test execution",
"allOf": [
{
"$ref": "#/components/schemas/TestMetaDto"
}
]
}
},
"required": ["url", "redirectedURL", "test"]
},
"MtrDataDto": {
"type": "object",
"properties": {
"hop": {
"type": "number",
"description": "Hop number in the traceroute path",
"example": 1
},
"host": {
"type": "string",
"description": "Host IP or domain name at this hop",
"example": "240.192.18.19"
},
"asn": {
"type": "string",
"description": "Autonomous System Number (ASN) for the host",
"example": "AS???"
},
"loss": {
"type": "number",
"description": "Packet loss percentage at this hop",
"example": 0
},
"sent": {
"type": "number",
"description": "Number of packets sent to this hop",
"example": 2
},
"last": {
"type": "number",
"description": "Last recorded round-trip time (RTT) in milliseconds",
"example": 0.28
},
"avg": {
"type": "number",
"description": "Average RTT across packets",
"example": 0.29
},
"best": {
"type": "number",
"description": "Best (lowest) RTT observed",
"example": 0.28
},
"worst": {
"type": "number",
"description": "Worst (highest) RTT observed",
"example": 0.3
},
"stdDev": {
"type": "number",
"description": "Standard deviation of RTT measurements",
"example": 0.01
}
},
"required": [
"hop",
"host",
"asn",
"loss",
"sent",
"last",
"avg",
"best",
"worst",
"stdDev"
]
},
"MtrResponseDto": {
"type": "object",
"properties": {
"timestamp": {
"type": "number",
"description": "Timestamp of the request in milliseconds",
"example": 1788414740025
},
"apiStatus": {
"type": "string",
"description": "API status message",
"example": "success",
"enum": ["success", "failure"]
},
"apiCode": {
"type": "number",
"description": "API status code",
"example": 200
},
"meta": {
"description": "Metadata about the MTR test execution",
"allOf": [
{
"$ref": "#/components/schemas/MtrMetaDto"
}
]
},
"data": {
"description": "Array of hop details observed in the MTR trace route",
"example": [
{
"hop": 1,
"host": "240.192.18.19",
"asn": "AS???",
"loss": 0,
"sent": 2,
"last": 0.28,
"avg": 0.29,
"best": 0.28,
"worst": 0.3,
"stdDev": 0.01
},
{
"hop": 2,
"host": "240.0.60.49",
"asn": "AS???",
"loss": 0,
"sent": 2,
"last": 0.28,
"avg": 0.29,
"best": 0.28,
"worst": 0.29,
"stdDev": 0.01
}
],
"type": "array",
"items": {
"$ref": "#/components/schemas/MtrDataDto"
}
}
},
"required": ["timestamp", "apiStatus", "apiCode", "meta", "data"]
},
"PingDto": {
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Target URL, hostname, IPv4, or IPv6 address",
"example": "https://example.com"
}
},
"required": ["url"]
},
"PingMetaDto": {
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "The tested URL or IP address",
"example": "example.com"
},
"test": {
"description": "Metadata about the test execution",
"allOf": [
{
"$ref": "#/components/schemas/TestMetaDto"
}
]
}
},
"required": ["url", "test"]
},
"PingDataDto": {
"type": "object",
"properties": {
"requests": {
"type": "number",
"description": "Number of ping requests sent",
"example": 4
},
"loss": {
"type": "number",
"description": "Packet loss percentage",
"example": 0
},
"latency": {
"type": "number",
"description": "Average latency in milliseconds",
"example": 32.5
},
"min": {
"type": "number",
"description": "Minimum round-trip time (RTT) in milliseconds",
"example": 30
},
"max": {
"type": "number",
"description": "Maximum round-trip time (RTT) in milliseconds",
"example": 35
},
"avg": {
"type": "number",
"description": "Average round-trip time (RTT) in milliseconds",
"example": 32.5
},
"stdDev": {
"type": "number",
"description": "Standard deviation of RTT in milliseconds",
"example": 1.5
},
"ip": {
"type": "string",
"description": "Resolved IP address of the tested domain",
"example": "142.250.183.206"
}
},
"required": [
"requests",
"loss",
"latency",
"min",
"max",
"avg",
"stdDev",
"ip"
]
},
"PingResponseDto": {
"type": "object",
"properties": {
"timestamp": {
"type": "number",
"description": "Timestamp of the request in milliseconds",
"example": 1788414740025
},
"apiStatus": {
"type": "string",
"description": "API status message",
"example": "success",
"enum": ["success", "failure"]
},
"apiCode": {
"type": "number",
"description": "API status code",
"example": 200
},
"meta": {
"description": "Metadata about the Ping test execution",
"allOf": [
{
"$ref": "#/components/schemas/PingMetaDto"
}
]
},
"data": {
"description": "Ping result statistics",
"example": {
"requests": 4,
"loss": 0,
"latency": 32.5,
"min": 30,
"max": 35,
"avg": 32.5,
"stdDev": 1.5,
"ip": "142.250.183.206"
},
"allOf": [
{
"$ref": "#/components/schemas/PingDataDto"
}
]
}
},
"required": ["timestamp", "apiStatus", "apiCode", "meta", "data"]
},
"LighthouseDto": {
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Target URL",
"example": "https://example.com"
},
"device": {
"type": "string",
"description": "Device type to emulate. Defaults to desktop.",
"example": "desktop",
"enum": ["desktop", "mobile"],
"default": "desktop"
},
"followRedirect": {
"type": "boolean",
"description": "Whether to follow redirects when checking site status",
"example": false,
"default": false
},
"proxyCountry": {
"type": "string",
"description": "Proxy country code to route the request",
"example": "us"
},
"parameters": {
"description": "Extra Lighthouse CLI parameters",
"example": ["--only-categories=seo"],
"type": "array",
"items": {
"type": "string"
}
}
},
"required": ["url"]
},
"LighthouseMetaDto": {
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Target URL",
"example": "https://example.com"
},
"device": {
"type": "string",
"description": "Device type used",
"enum": ["desktop", "mobile"]
},
"followRedirect": {
"type": "boolean",
"description": "Whether redirects were followed"
},
"redirectedURL": {
"type": "string",
"description": "Final URL after redirection (if any)",
"example": "https://example.com/"
},
"proxyCountry": {
"type": "string",
"description": "Proxy country used, if any"
},
"test": {
"description": "Test details object",
"allOf": [
{
"$ref": "#/components/schemas/TestMetaDto"
}
]
}
},
"required": ["url", "device", "followRedirect", "redirectedURL", "test"]
},
"LighthouseResponseDto": {
"type": "object",
"properties": {
"timestamp": {
"type": "number",
"description": "Timestamp of the request in milliseconds",
"example": 1788414740025
},
"apiStatus": {
"type": "string",
"description": "API status message",
"example": "success",
"enum": ["success", "failure"]
},
"apiCode": {
"type": "number",
"description": "API status code",
"example": 200
},
"meta": {
"description": "Metadata about the request",
"allOf": [
{
"$ref": "#/components/schemas/LighthouseMetaDto"
}
]
},
"data": {
"type": "string",
"description": "URL to the Lighthouse report",
"example": "https://example.com/report.html"
}
},
"required": ["timestamp", "apiStatus", "apiCode", "meta", "data"]
},
"SearchMetaDto": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Original query",
"example": "best running shoes"
},
"count": {
"type": "number",
"description": "Number of results returned",
"example": 10
},
"source": {
"description": "Search source used",
"example": "web",
"type": "array",
"items": {
"type": "string"
}
},
"location": {
"type": "string",
"description": "Country used for ranking",
"example": "us"
},
"time": {
"type": "string",
"description": "Time filter applied",
"example": "d"
},
"scrape": {
"type": "boolean",
"description": "Whether URL scraping was enabled",
"example": false
},
"scrapeLimit": {
"type": "number",
"description": "Number of URLs scraped",
"example": 3
},
"test": {
"description": "Test metadata",
"allOf": [
{
"$ref": "#/components/schemas/TestMetaDto"
}
]
}
},
"required": [
"query",
"count",
"source",
"location",
"time",
"scrape",
"scrapeLimit",
"test"
]
},
"SearchResultItemDto": {
"type": "object",
"properties": {
"title": {
"type": "string",
"description": "Result title",
"example": "Best Running Shoes of 2025"
},
"url": {
"type": "string",
"description": "Canonical URL",
"example": "https://example.com/running-shoes"
},
"snippet": {
"type": "string",
"description": "Clean snippet (ads/HTML removed)",
"example": "We tested over 100 pairs to find the best running shoes..."
},
"date": {
"type": "string",
"description": "Published date (if available)",
"example": "Dec 18, 2025"
},
"position": {
"type": "number",
"description": "Rank position",
"example": 1
},
"content": {
"type": "object",
"description": "Scraped cleaned HTML content from the result URL",
"example": "Full article cleaned for LLM consumption..."
},
"thumbnail": {
"type": "object",
"description": "Thumbnail image URL (if available)",
"example": "https://example.com/thumb.jpg"
}
},
"required": ["title", "url", "snippet", "position"]
},
"SearchResponseDto": {
"type": "object",
"properties": {
"timestamp": {
"type": "number",
"description": "Timestamp of the request in milliseconds",
"example": 1788414740025
},
"apiStatus": {
"type": "string",
"description": "API status message",
"example": "success",
"enum": ["success", "failure"]
},
"apiCode": {
"type": "number",
"description": "API status code",
"example": 200
},
"meta": {
"$ref": "#/components/schemas/SearchMetaDto"
},
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/SearchResultItemDto"
}
}
},
"required": ["timestamp", "apiStatus", "apiCode", "meta", "data"]
},
"ImageSearchResultItemDto": {
"type": "object",
"properties": {
"title": {
"type": "string",
"example": "Nike Alphafly 3"
},
"imageUrl": {
"type": "string",
"example": "https://example.com/img.jpg"
},
"sourceUrl": {
"type": "string",
"example": "https://example.com/page"
},
"width": {
"type": "number",
"example": 1024
},
"height": {
"type": "number",
"example": 768
}
},
"required": ["title", "imageUrl", "sourceUrl", "width", "height"]
},
"ImageSearchResponseDto": {
"type": "object",
"properties": {
"timestamp": {
"type": "number",
"description": "Timestamp of the request in milliseconds",
"example": 1788414740025
},
"apiStatus": {
"type": "string",
"description": "API status message",
"example": "success",
"enum": ["success", "failure"]
},
"apiCode": {
"type": "number",
"description": "API status code",
"example": 200
},
"meta": {
"$ref": "#/components/schemas/SearchMetaDto"
},
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ImageSearchResultItemDto"
}
}
},
"required": ["timestamp", "apiStatus", "apiCode", "meta", "data"]
},
"SearchMarkdownResponseDto": {
"type": "object",
"properties": {
"timestamp": {
"type": "number",
"description": "Timestamp of the request in milliseconds",
"example": 1788414740025
},
"apiStatus": {
"type": "string",
"description": "API status message",
"example": "success",
"enum": ["success", "failure"]
},
"apiCode": {
"type": "number",
"description": "API status code",
"example": 200
},
"meta": {
"$ref": "#/components/schemas/SearchMetaDto"
},
"data": {
"type": "object",
"example": "1. [Title](https://example.com)\n - snippet"
}
},
"required": ["timestamp", "apiStatus", "apiCode", "meta", "data"]
},
"SearchHtmlResponseDto": {
"type": "object",
"properties": {
"timestamp": {
"type": "number",
"description": "Timestamp of the request in milliseconds",
"example": 1788414740025
},
"apiStatus": {
"type": "string",
"description": "API status message",
"example": "success",
"enum": ["success", "failure"]
},
"apiCode": {
"type": "number",
"description": "API status code",
"example": 200
},
"meta": {
"$ref": "#/components/schemas/SearchMetaDto"
},
"data": {
"type": "object",
"example": "