Brand DNA avatar

Brand DNA

Pricing

from $1.00 / 1,000 results

Go to Apify Store
Brand DNA

Brand DNA

Extract structured brand identity from any website — colors, fonts, tone, positioning, and reusable marketing templates — using deterministic heuristics with no AI hallucinations.

Pricing

from $1.00 / 1,000 results

Rating

0.0

(0)

Developer

Solutions Smart

Solutions Smart

Maintained by Community

Actor stats

0

Bookmarked

43

Total users

18

Monthly active users

3 days ago

Last modified

Share

🚀 Brand DNA Actor (No LLM)

Website Brand Analysis & Identity Extraction — Deterministic & Repeatable

Brand DNA visual concept

Visual concept for Brand DNA live view, brand signal extraction, and campaign insight output.

Brand DNA Actor automatically analyzes any business website and builds a structured Brand DNA profile — visual identity, tone, positioning, and reusable marketing templates — using deterministic heuristics only.

No LLMs. No hallucinations. No unpredictable output.

Just repeatable brand intelligence you can plug into audits, automation, and marketing workflows.

👉 Extract brand signals in seconds.

🔍 Why Use Brand DNA Actor?

Understanding a brand manually takes time:

  • visual style analysis
  • tone detection
  • positioning evaluation
  • copy signal extraction

This actor automates the entire process — turning website content into structured brand intelligence.

Perfect for agencies, growth teams, analysts, and automation builders.

🆚 Brand DNA vs Creation Tools

Brand intelligence vs brand creation comparison

A positioning snapshot showing Brand DNA as a deterministic brand intelligence engine built for structured extraction, workflows, and automation use cases.

⚡ What Happens When You Run It

For each website:

✅ Crawl homepage + key internal pages
SPA detection with Playwright fallback (new in v2.0)
✅ Extract colors, fonts, logo candidates
CSS variable extraction for brand colors (new in v2.0)
✅ Detect tone and voice dimensions
✅ Identify positioning signals
CTA extraction with weighted scoring (new in v2.0)
Multi-signal extraction: JSON-LD, NEXT_DATA, meta tags (new in v2.0)
✅ Generate hero/tagline candidates
✅ Build reusable CTA & ad templates
✅ Produce a structured brand summary \

All deterministic. All repeatable.

🎯 Ideal Use Cases

  • Competitor brand analysis
  • Client onboarding audits
  • Marketing template generation
  • Website tone evaluation
  • Creative direction baselines
  • Automation pipelines (n8n / CRM workflows)
  • Brand intelligence dashboards

🧠 Key Capabilities

Visual Identity Extraction

  • Primary/secondary colors
  • Accessibility contrast signals
  • Typography detection
  • Logo candidates
  • CSS variables for brand colors

Copy & Voice Signals

  • Top keywords & phrases
  • CTA analysis with scoring
  • Tone heuristics
  • Voice dimensions

Positioning Intelligence

  • Industry guess
  • Audience signals
  • Value propositions
  • Brand attributes
  • Positioning summary

Marketing Templates

  • CTA rewrite variants
  • Social post skeletons
  • Short ad copy templates

Multi-Signal Extraction (new in v2.0)

  • JSON-LD structured data (Organization, WebSite, LocalBusiness)
  • Next.js __NEXT_DATA__ parsing
  • Nuxt data detection
  • Meta/OpenGraph tag collection

📦 Output

Each run writes to the default dataset. The actor does not create separate datasets named "BrandKit" and "Templates".

Each analyzed website writes one type: "brandDNA" item to the default dataset.

Optional extras are nested into that same item:

  • brandKit
  • templates
  • pages when outputPages is enabled
  • delta when outputDiff is enabled
  • debug when debug output is enabled
  • campaignInsights for dashboard-ready monitoring, benchmarking, CTA prediction, localization, and automation cues 📊

The brandDNA.brandKit payload includes:

  • Visual identity
  • Tone & positioning
  • Hero/tagline candidates
  • Contacts
  • Signals from JSON-LD, NEXT_DATA, meta tags
  • Markdown brand summary

For multi-URL comparison runs, the side-by-side comparison is written to the key-value store as comparison.json instead of adding an extra dataset item.

The visual live view is written to the default key-value store for every successful run:

Optional extra file exports are written to the default key-value store, not the dataset:

  • brand-dna-output.json
  • brand-dna-report.md
  • brand-dna-report.pdf
  • RUN_SUMMARY
  • homepage-screenshot.png when screenshots are enabled

The Actor now also defines a key-value store schema and an expanded output schema, so Apify Console can surface these files more clearly in the Output and Storage tabs. Collections are grouped as:

  • HTML reports
  • JSON exports
  • Written reports
  • Screenshots
  • Comparison outputs
  • Run summaries

Example Output

{
"type": "brandDNA",
"startUrl": "https://www.apify.com",
"detectedLanguage": "en",
"artifacts": {
"liveView": {
"key": "brand-dna-live.html",
"contentType": "text/html"
},
"runSummary": {
"key": "RUN_SUMMARY",
"contentType": "application/json"
}
},
"brandKit": {
"name": "Apify",
"style": {
"fonts": {
"body": "Inter",
"headings": "Inter",
"buttons": "Inter"
},
"logo": {
"url": "https://www.apify.com/img/apify-logo/wordmark.svg"
}
},
"positioning": {
"industryGuess": [{ "label": "software", "confidence": 0.95 }],
"audience": [{ "label": "B2B", "confidence": 0.95 }],
"valueProps": ["automation", "speed", "security", "reliability"],
"positioningStatement": "Software platform for businesses and developers focused on automation, speed, and security."
}
},
"templates": {
"ctaVariants": ["Talk to a specialist", "Get in touch", "Reach out"]
},
"campaignInsights": {
"brandConsistencyMonitor": {
"status": "stable"
},
"abTestingPredictor": {
"winner": {
"text": "Try it now",
"confidence": "high"
}
}
}
}

🆕 New in v2.0

Hybrid Crawling (HTML-First + Fallback Rendering)

  • Fast HTML extraction by default using CheerioCrawler
  • Automatic SPA shell detection with Playwright fallback
  • Domain hit-rate tracking for adaptive rendering decisions
  • Configurable rendering timeout and selector waiting

Anti-Bot & Stability

  • Apify Proxy integration (Residential/Datacenter)
  • Adaptive concurrency (starts low, scales on success)
  • Exponential backoff for 403/429 responses
  • Request pacing to avoid rate limiting

Enhanced CTA Extraction

  • Weighted scoring based on position, class, text, and href
  • Hero/main position bonus, nav/footer penalty
  • Action verb detection and generic label filtering
  • Top-N ranked results

Multi-Signal Extraction

  • JSON-LD structured data (Organization, WebSite, LocalBusiness)
  • Next.js __NEXT_DATA__ parsing
  • Nuxt data detection
  • Meta/OpenGraph tag collection
  • CSS variable extraction for brand colors

📥 Input Configuration

FieldTypeDefaultDescription
startUrlstringrequiredWebsite URL to analyze
startUrlsstring[]-Optional batch mode input (1-20 URLs). When provided, startUrl is ignored.
maxPagesinteger8Maximum pages to crawl (1-50)
respectRobotsTxtbooleantrueRespect robots.txt rules
timeoutSecsinteger120Maximum crawl duration
includeBlogbooleantrueInclude blog pages

🖥️ Rendering Options

FieldTypeDefaultDescription
useRenderingFallbackbooleantrueEnable Playwright for SPA shells
renderingTimeoutMsinteger1200Rendering timeout in ms
renderingWaitForSelectorsstring"main, h1, button"Selectors to wait for

🌐 Proxy Options

FieldTypeDefaultDescription
useProxybooleantrueEnable Apify Proxy
proxyGroupstring"DATACENTER"Proxy group (RESIDENTIAL/DATACENTER)

🚦 Concurrency Options

FieldTypeDefaultDescription
maxConcurrencyinteger2Maximum concurrent requests (1-8)
adaptiveConcurrencybooleantrueAuto-adjust based on success
requestDelayMsinteger0Delay between requests

🔁 Retry Options

FieldTypeDefaultDescription
maxRequestRetriesinteger3Max retries per request

🛣️ Path filtering (new)

FieldTypeDefaultDescription
includePathsstring[]Optional path allowlist (wildcards, e.g. /products/*). Start URL is always included.
excludePathsstring[]Optional path denylist (wildcards, e.g. /blog/*, /legal/*).

🌍 Multi-language & translation

FieldTypeDefaultDescription
languagestring"auto"Content language: auto (detect), en, de, es, fr, it, pt
useLanguageDetectorbooleantrueWhen language is Auto, use Apify Language Detector for ML-based detection
useTranslationbooleanfalseTranslate page content to a target language before extraction
translateToLanguagestring"en"Target language when translation is enabled
translationActorIdstringApify actor ID for translation (e.g. tkapler/deepl-actor) when Use translation is enabled
translationBatchModebooleantrueSend all page texts in one batch to the translation actor; falls back to sequential mode if unsupported

📦 Output extras (new)

FieldTypeDefaultDescription
outputFormatstring"single"single: one default-dataset item with type: brandDNA containing nested outputs. split is deprecated and Store runs are forced to single-item output for billing safety.
outputComparisonbooleanfalseWhen 2-5 URLs are provided, write side-by-side comparison output to comparison.json in the key-value store.
outputPagesbooleanfalsePush one dataset item per crawled page with page-level extracted fields.
outputDiffbooleanfalseCompare current brandKit with previous cached snapshot and output a delta item.
exportFormatsstring[]Optional extra file exports to KV store: json, markdown, html, pdf. The visual brand-dna-live.html live view is now written automatically for every successful run; html remains supported for backward compatibility.

🔔 Webhook options (new)

FieldTypeDefaultDescription
webhook.urlstringWebhook destination URL (preferred over callbackUrl).
webhook.eventsstring[]["completed","failed"]Events to send: started, completed, failed.
webhook.retriesinteger1Retry attempts on network error / 5xx.
webhook.retryDelayMsinteger2000Delay between retries.
webhook.timeoutMsinteger10000Request timeout per attempt.
webhook.secretstringOptional HMAC signing secret (x-branddna-signature: sha256=...).
webhook.headersobjectOptional custom headers map.
callbackUrlstringLegacy fallback URL used when webhook.url is not set.

Example Input

{
"startUrl": "https://www.apify.com",
"mode": "full",
"maxPages": 8,
"crawlScope": "site",
"respectRobotsTxt": true,
"useProxy": true,
"proxyGroup": "DATACENTER",
"captureScreenshot": true,
"outputPages": true,
"outputDiff": true,
"exportFormats": ["json", "markdown", "pdf"]
}

Supported locales: English (en), German (de), Spanish (es), French (fr), Italian (it), and Portuguese (pt). Extraction uses locale-specific stopwords, tone markers, industry/audience keywords, CTA maps, and templates. Add more languages by adding a src/data/xx.js locale file and registering it in src/data/index.js.

🧾 Translation actor contract

When Use translation is enabled, Brand DNA calls your translation actor to translate page content before extraction. The actor must accept:

  • Single-text input: text (string), targetLanguage (e.g. en, de), and optionally sourceLanguage (e.g. auto).
  • Batch input (optional): texts (array of strings), targetLanguage. If supported, Brand DNA will send one batch per run instead of one call per page.

The actor’s default dataset should return items where each item has a translated string in one of: translatedText, text, or translation. For batch mode, return either one item per text in the same order, or one item with a translations array.

Known-compatible actors include DeepL (AI translation). If batch mode fails (e.g. actor does not support texts), Brand DNA falls back to sequential single-text calls.

🔗 Integrations: n8n, Make, Slack/Teams

n8n & Make: Use the Apify node (n8n) or Apify module (Make) to run Brand DNA. Input: startUrl or startUrls (array, max 20), plus optional mode, maxPages, language, outputFormat, exportFormats, webhook, etc. Output goes to the default dataset primarily as type: brandDNA items, plus type: error when a URL fails. The visual live view is always exposed as brand-dna-live.html, and optional extra reports and summaries are exposed in the default key-value store and linked in the Actor Output tab.

Webhook: Set webhook.url to receive signed JSON events (started, completed, failed). Base payload includes { event, timestamp, runId, datasetId, status, startUrls, resultsCount, errorCount }. Configure retries/timeout/headers with webhook.retries, webhook.retryDelayMs, webhook.timeoutMs, and webhook.headers. If webhook.secret is set, the actor adds x-branddna-signature (HMAC-SHA256). callbackUrl remains supported as a fallback for backward compatibility.

🔄 Demo Workflow

Run → extract brand profile → feed into workflow:

Brand DNA Actor
n8n / automation tool
brand audit / template generator / CRM enrichment

Instant brand intelligence — no manual review required.

🎥 Video Walkthrough

See how the actor works and why to use it:

🔒 Deterministic by Design

Unlike AI-driven analysis:

✔ repeatable outputs ✔ explainable heuristics ✔ no hallucinations ✔ stable automation pipelines

Perfect for production workflows.

🛠 Integration Ready

Works seamlessly with:

  • Apify scheduling
  • n8n workflows (docs/n8n-integration.md, n8n-workflow-brand-dna.json)
  • OpenClaw (docs/openclaw-integration.md, skills/brand-dna/SKILL.md)
  • CRM pipelines
  • Reporting dashboards

⭐ Rate This Actor

If this actor helped you, please rate it on Apify. Your rating helps others discover it and supports future improvements.

⚠ Limitations

  • Rule-based approximations

Designed for structured automation — not creative AI writing.

🎯 Final Value

Instead of manually dissecting websites…

You get:

👉 automated brand intelligence
👉 reusable marketing assets
👉 structured identity signals
👉 repeatable analysis \

All in seconds.

💳 Pricing

Brand DNA uses Apify pay-per-event pricing and is billed per analyzed website.

  • Base result: one analyzed website, including up to 8 crawled pages.
  • Extended crawl: if a run crawls 9 to 20 pages, one extra extended_pages event is charged.
  • High-volume crawl: if a run crawls 21+ pages, the run charges extended_pages plus high_volume_pages.
  • Single-result billing: each website still produces one main type: "brandDNA" dataset item, so nested outputs do not multiply result charges.
  • Included in the same result: brandKit, templates, campaignInsights, optional pages, optional delta, and optional debug data.
  • Not billed as extra dataset items: the visual live view (brand-dna-live.html), RUN_SUMMARY, screenshots, and comparison.json are written to the key-value store.

Current Store pricing is designed around these tiers:

  • 1-8 pages: base result price
  • 9-20 pages: base result price + extended crawl
  • 21+ pages: base result price + extended crawl + high-volume crawl

This keeps smaller runs affordable while letting deeper audits cover their additional crawl and extraction cost more fairly.