Brand DNA
Pricing
from $5.00 / 1,000 results
Brand DNA
Extract structured brand identity from any website β colors, fonts, tone, positioning, and reusable marketing templates β using deterministic heuristics with no AI hallucinations.
Brand DNA
Pricing
from $5.00 / 1,000 results
Extract structured brand identity from any website β colors, fonts, tone, positioning, and reusable marketing templates β using deterministic heuristics with no AI hallucinations.
You can access the Brand DNA programmatically from your own applications by using the Apify API. You can also choose the language preference from below. To use the Apify API, youβll need an Apify account and your API token, found in Integrations settings in Apify Console.
{ "openapi": "3.0.1", "info": { "version": "2.0", "x-build-id": "jXPc4MFCjZefJn4qw" }, "servers": [ { "url": "https://api.apify.com/v2" } ], "paths": { "/acts/solutionssmart~brand-dna/run-sync-get-dataset-items": { "post": { "operationId": "run-sync-get-dataset-items-solutionssmart-brand-dna", "x-openai-isConsequential": false, "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.", "tags": [ "Run Actor" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/inputSchema" } } } }, "parameters": [ { "name": "token", "in": "query", "required": true, "schema": { "type": "string" }, "description": "Enter your Apify token here" } ], "responses": { "200": { "description": "OK" } } } }, "/acts/solutionssmart~brand-dna/runs": { "post": { "operationId": "runs-sync-solutionssmart-brand-dna", "x-openai-isConsequential": false, "summary": "Executes an Actor and returns information about the initiated run in response.", "tags": [ "Run Actor" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/inputSchema" } } } }, "parameters": [ { "name": "token", "in": "query", "required": true, "schema": { "type": "string" }, "description": "Enter your Apify token here" } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/runsResponseSchema" } } } } } } }, "/acts/solutionssmart~brand-dna/run-sync": { "post": { "operationId": "run-sync-solutionssmart-brand-dna", "x-openai-isConsequential": false, "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.", "tags": [ "Run Actor" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/inputSchema" } } } }, "parameters": [ { "name": "token", "in": "query", "required": true, "schema": { "type": "string" }, "description": "Enter your Apify token here" } ], "responses": { "200": { "description": "OK" } } } } }, "components": { "schemas": { "inputSchema": { "type": "object", "properties": { "startUrl": { "title": "π Start URL", "type": "string", "description": "Business website URL to analyze (for example https://www.apify.com). Ignored if Start URLs is provided." }, "startUrls": { "title": "π Start URLs", "minItems": 1, "maxItems": 20, "type": "array", "description": "Optional list of URLs to analyze in one run. Provide 1 to 20 URLs. If set, Start URL is ignored.", "items": { "type": "string" } }, "mode": { "title": "βοΈ Mode", "enum": [ "full", "fast" ], "type": "string", "description": "Full runs the full extraction flow. Fast limits page count and skips language detection and translation.", "default": "full" }, "maxPages": { "title": "π Max pages", "minimum": 1, "maximum": 50, "type": "integer", "description": "Maximum number of pages to crawl.", "default": 8 }, "crawlScope": { "title": "π§ Crawl scope", "enum": [ "auto", "site", "path-prefix", "single-page", "actor-page" ], "type": "string", "description": "Controls how tightly the crawl stays around the start URL. Auto keeps Apify actor pages focused on the actor path.", "default": "auto" }, "sitemapUrl": { "title": "πΊοΈ Sitemap URL", "type": "string", "description": "Optional sitemap URL. When set, URLs are taken from the sitemap instead of link discovery." }, "respectRobotsTxt": { "title": "π€ Respect robots.txt", "type": "boolean", "description": "Skip URLs disallowed by robots.txt.", "default": true }, "timeoutSecs": { "title": "β±οΈ Request timeout", "minimum": 10, "maximum": 300, "type": "integer", "description": "Timeout per request in seconds.", "default": 120 }, "language": { "title": "π Language", "enum": [ "auto", "en", "de", "es", "fr", "it", "pt" ], "type": "string", "description": "Content language for extraction: auto, en, de, es, fr, it, or pt.", "default": "auto" }, "useLanguageDetector": { "title": "π§ Use language detector", "type": "boolean", "description": "When Language is auto, use the Apify Language Detector actor for ML-based detection.", "default": true }, "useTranslation": { "title": "π Use translation", "type": "boolean", "description": "Translate page content to a target language before extraction.", "default": false }, "translateToLanguage": { "title": "π― Translate to language", "type": "string", "description": "Target language code when translation is enabled, for example en or de.", "default": "en" }, "translationActorId": { "title": "π§© Translation actor ID", "type": "string", "description": "Apify actor ID for translation when Use translation is enabled, for example tkapler/deepl-actor." }, "translationBatchMode": { "title": "π¦ Translation batch mode", "type": "boolean", "description": "When enabled, send all page texts in one batch to the translation actor and fall back to sequential translation if unsupported.", "default": true }, "includeBlog": { "title": "βοΈ Include blog", "type": "boolean", "description": "Prioritize blog pages in the crawl.", "default": true }, "includePaths": { "title": "β
Include paths", "type": "array", "description": "Optional path allowlist. Wildcards are supported, for example /products/*.", "items": { "type": "string" } }, "excludePaths": { "title": "π« Exclude paths", "type": "array", "description": "Optional path denylist. Wildcards are supported, for example /blog/* or /legal/*.", "items": { "type": "string" } }, "useRenderingFallback": { "title": "π₯οΈ Use rendering fallback", "type": "boolean", "description": "Enable Playwright rendering for SPA shells when needed.", "default": true }, "renderingTimeoutMs": { "title": "β³ Rendering timeout", "minimum": 500, "maximum": 10000, "type": "integer", "description": "Timeout for Playwright rendering in milliseconds.", "default": 1200 }, "renderingWaitForSelectors": { "title": "π Wait for selectors", "type": "string", "description": "Comma-separated CSS selectors to wait for before extracting content.", "default": "main, h1, button" }, "useProxy": { "title": "π‘οΈ Use proxy", "type": "boolean", "description": "Enable Apify Proxy for requests.", "default": true }, "proxyGroup": { "title": "π Proxy group", "enum": [ "RESIDENTIAL", "DATACENTER" ], "type": "string", "description": "Apify Proxy group to use. Datacenter is faster; use Residential if the site blocks datacenter IPs.", "default": "DATACENTER" }, "maxConcurrency": { "title": "π¦ Max concurrency", "minimum": 1, "maximum": 8, "type": "integer", "description": "Maximum concurrent requests.", "default": 4 }, "adaptiveConcurrency": { "title": "π Adaptive concurrency", "type": "boolean", "description": "Automatically adjust concurrency based on success rate.", "default": true }, "requestDelayMs": { "title": "π’ Request delay", "minimum": 0, "maximum": 5000, "type": "integer", "description": "Delay between requests in milliseconds. Set to 0 to disable.", "default": 0 }, "maxRequestRetries": { "title": "π Max retries", "minimum": 1, "maximum": 5, "type": "integer", "description": "Maximum number of retries per request.", "default": 3 }, "cacheTtlSeconds": { "title": "πΎ Cache TTL (seconds)", "minimum": 0, "maximum": 86400, "type": "integer", "description": "If greater than 0, reuse a persisted cached result for the same URL and settings across runs within this many seconds.", "default": 0 }, "forceRefresh": { "title": "β»οΈ Force refresh", "type": "boolean", "description": "Skip reading from cache and always perform a fresh crawl.", "default": false }, "outputFormat": { "title": "π¦ Output format", "enum": [ "single", "split" ], "type": "string", "description": "Single emits one dataset item per analyzed website. Split is deprecated and Store runs are forced to single-item output for billing safety.", "default": "single" }, "outputComparison": { "title": "βοΈ Output comparison", "type": "boolean", "description": "When 2 to 5 URLs are provided, output an extra dataset item with a side-by-side comparison.", "default": false }, "outputPages": { "title": "π Output pages", "type": "boolean", "description": "Push one dataset item per crawled page with page-level extracted fields.", "default": false }, "outputDiff": { "title": "π°οΈ Output historical diff", "type": "boolean", "description": "Compare the current brandKit with the most recent persisted snapshot for the same URL and settings and push a delta item.", "default": false }, "exportFormats": { "title": "π€ Export formats", "type": "array", "description": "Optional extra file exports for the key-value store. The visual HTML live view is always written automatically; use this to add JSON, Markdown, and PDF files. html remains accepted for backward compatibility.", "items": { "type": "string", "enum": [ "json", "markdown", "html", "pdf" ] } }, "callbackUrl": { "title": "π Callback URL", "type": "string", "description": "Legacy webhook URL fallback used when webhook.url is not set." }, "webhook": { "title": "π Webhook", "type": "object", "description": "Optional webhook settings for started, completed, and failed events.", "properties": { "url": { "title": "π Webhook URL", "type": "string", "description": "Destination URL for webhook events.", "editor": "textfield" }, "events": { "title": "ποΈ Events", "type": "array", "description": "Webhook events to send.", "editor": "select", "items": { "type": "string", "enum": [ "started", "completed", "failed" ] } }, "retries": { "title": "π Retries", "type": "integer", "description": "Retry attempts on network error or 5xx response.", "default": 1, "minimum": 0, "maximum": 5 }, "retryDelayMs": { "title": "β³ Retry delay", "type": "integer", "description": "Delay between retries in milliseconds.", "default": 2000, "minimum": 250, "maximum": 10000, "unit": "ms" }, "timeoutMs": { "title": "β±οΈ Timeout", "type": "integer", "description": "Webhook request timeout in milliseconds.", "default": 10000, "minimum": 1000, "maximum": 30000, "unit": "ms" }, "secret": { "title": "π Signing secret", "type": "string", "description": "Optional shared secret for HMAC-SHA256 signing.", "editor": "textfield" }, "headers": { "title": "π§Ύ Headers", "type": "object", "description": "Optional custom headers map.", "editor": "json" } }, "default": { "events": [ "completed", "failed" ], "retries": 1, "retryDelayMs": 2000, "timeoutMs": 10000 }, "additionalProperties": false }, "debug": { "title": "π Debug output", "type": "boolean", "description": "Push an extra dataset item with intermediate data for support and tuning.", "default": false }, "captureScreenshot": { "title": "πΈ Capture screenshot", "type": "boolean", "description": "Save a viewport screenshot of the first page as homepage-screenshot.png in the key-value store.", "default": false }, "extractImageColors": { "title": "π¨ Extract image colors", "type": "boolean", "description": "Fetch the logo or og:image URL and compute a dominant color for signals.dominantImageColor.", "default": false }, "output": { "title": "π§Ύ Output options", "type": "object", "description": "Select which outputs are pushed to the dataset.", "properties": { "brandKit": { "title": "𧬠Brand kit", "type": "boolean", "description": "Include the brandKit payload.", "default": true }, "templates": { "title": "βοΈ Templates", "type": "boolean", "description": "Include CTA, social, and ad-copy templates.", "default": true } }, "default": { "brandKit": true, "templates": true }, "additionalProperties": false } } }, "runsResponseSchema": { "type": "object", "properties": { "data": { "type": "object", "properties": { "id": { "type": "string" }, "actId": { "type": "string" }, "userId": { "type": "string" }, "startedAt": { "type": "string", "format": "date-time", "example": "2025-01-08T00:00:00.000Z" }, "finishedAt": { "type": "string", "format": "date-time", "example": "2025-01-08T00:00:00.000Z" }, "status": { "type": "string", "example": "READY" }, "meta": { "type": "object", "properties": { "origin": { "type": "string", "example": "API" }, "userAgent": { "type": "string" } } }, "stats": { "type": "object", "properties": { "inputBodyLen": { "type": "integer", "example": 2000 }, "rebootCount": { "type": "integer", "example": 0 }, "restartCount": { "type": "integer", "example": 0 }, "resurrectCount": { "type": "integer", "example": 0 }, "computeUnits": { "type": "integer", "example": 0 } } }, "options": { "type": "object", "properties": { "build": { "type": "string", "example": "latest" }, "timeoutSecs": { "type": "integer", "example": 300 }, "memoryMbytes": { "type": "integer", "example": 1024 }, "diskMbytes": { "type": "integer", "example": 2048 } } }, "buildId": { "type": "string" }, "defaultKeyValueStoreId": { "type": "string" }, "defaultDatasetId": { "type": "string" }, "defaultRequestQueueId": { "type": "string" }, "buildNumber": { "type": "string", "example": "1.0.0" }, "containerUrl": { "type": "string" }, "usage": { "type": "object", "properties": { "ACTOR_COMPUTE_UNITS": { "type": "integer", "example": 0 }, "DATASET_READS": { "type": "integer", "example": 0 }, "DATASET_WRITES": { "type": "integer", "example": 0 }, "KEY_VALUE_STORE_READS": { "type": "integer", "example": 0 }, "KEY_VALUE_STORE_WRITES": { "type": "integer", "example": 1 }, "KEY_VALUE_STORE_LISTS": { "type": "integer", "example": 0 }, "REQUEST_QUEUE_READS": { "type": "integer", "example": 0 }, "REQUEST_QUEUE_WRITES": { "type": "integer", "example": 0 }, "DATA_TRANSFER_INTERNAL_GBYTES": { "type": "integer", "example": 0 }, "DATA_TRANSFER_EXTERNAL_GBYTES": { "type": "integer", "example": 0 }, "PROXY_RESIDENTIAL_TRANSFER_GBYTES": { "type": "integer", "example": 0 }, "PROXY_SERPS": { "type": "integer", "example": 0 } } }, "usageTotalUsd": { "type": "number", "example": 0.00005 }, "usageUsd": { "type": "object", "properties": { "ACTOR_COMPUTE_UNITS": { "type": "integer", "example": 0 }, "DATASET_READS": { "type": "integer", "example": 0 }, "DATASET_WRITES": { "type": "integer", "example": 0 }, "KEY_VALUE_STORE_READS": { "type": "integer", "example": 0 }, "KEY_VALUE_STORE_WRITES": { "type": "number", "example": 0.00005 }, "KEY_VALUE_STORE_LISTS": { "type": "integer", "example": 0 }, "REQUEST_QUEUE_READS": { "type": "integer", "example": 0 }, "REQUEST_QUEUE_WRITES": { "type": "integer", "example": 0 }, "DATA_TRANSFER_INTERNAL_GBYTES": { "type": "integer", "example": 0 }, "DATA_TRANSFER_EXTERNAL_GBYTES": { "type": "integer", "example": 0 }, "PROXY_RESIDENTIAL_TRANSFER_GBYTES": { "type": "integer", "example": 0 }, "PROXY_SERPS": { "type": "integer", "example": 0 } } } } } } } } }}OpenAPI is a standard for designing and describing RESTful APIs, allowing developers to define API structure, endpoints, and data formats in a machine-readable way. It simplifies API development, integration, and documentation.
OpenAPI is effective when used with AI agents and GPTs by standardizing how these systems interact with various APIs, for reliable integrations and efficient communication.
By defining machine-readable API specifications, OpenAPI allows AI models like GPTs to understand and use varied data sources, improving accuracy. This accelerates development, reduces errors, and provides context-aware responses, making OpenAPI a core component for AI applications.
You can download the OpenAPI definitions for Brand DNA from the options below:
If youβd like to learn more about how OpenAPI powers GPTs, read our blog post.
You can also check out our other API clients: