Brand DNA
Pricing
from $1.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.
Pricing
from $1.00 / 1,000 results
Rating
0.0
(0)
Developer

Hayder Al-Khalissi
Actor stats
0
Bookmarked
15
Total users
7
Monthly active users
11 hours ago
Last modified
Categories
Share
π Brand DNA Actor (No LLM)
Website Brand Analysis & Identity Extraction β Deterministic & Repeatable
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.
β‘ 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 produces:
BrandKit dataset
Structured brand profile including:
- Visual identity
- Tone & positioning
- Hero/tagline candidates
- Contacts
- Signals from JSON-LD, NEXT_DATA, meta tags
- Markdown brand summary
Templates dataset
Reusable marketing building blocks.
All structured for automation.
π 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
| Field | Type | Default | Description |
|---|---|---|---|
startUrl | string | required | Website URL to analyze |
maxPages | integer | 8 | Maximum pages to crawl (1-50) |
respectRobotsTxt | boolean | true | Respect robots.txt rules |
timeoutSecs | integer | 120 | Maximum crawl duration |
includeBlog | boolean | true | Include blog pages |
Rendering Options
| Field | Type | Default | Description |
|---|---|---|---|
useRenderingFallback | boolean | true | Enable Playwright for SPA shells |
renderingTimeoutMs | integer | 1200 | Rendering timeout in ms |
renderingWaitForSelectors | string | "main, h1, button" | Selectors to wait for |
Proxy Options
| Field | Type | Default | Description |
|---|---|---|---|
useProxy | boolean | true | Enable Apify Proxy |
proxyGroup | string | "RESIDENTIAL" | Proxy group (RESIDENTIAL/DATACENTER) |
Concurrency Options
| Field | Type | Default | Description |
|---|---|---|---|
maxConcurrency | integer | 2 | Maximum concurrent requests (1-8) |
adaptiveConcurrency | boolean | true | Auto-adjust based on success |
requestDelayMs | integer | 0 | Delay between requests |
Retry Options
| Field | Type | Default | Description |
|---|---|---|---|
maxRequestRetries | integer | 3 | Max retries per request |
Path filtering (new)
| Field | Type | Default | Description |
|---|---|---|---|
includePaths | string[] | β | Optional path allowlist (wildcards, e.g. /products/*). Start URL is always included. |
excludePaths | string[] | β | Optional path denylist (wildcards, e.g. /blog/*, /legal/*). |
Multi-language & translation
| Field | Type | Default | Description |
|---|---|---|---|
language | string | "auto" | Content language: auto (detect), en, de, es, fr, it, pt |
useLanguageDetector | boolean | true | When language is Auto, use Apify Language Detector for ML-based detection |
useTranslation | boolean | false | Translate page content to a target language before extraction |
translateToLanguage | string | "en" | Target language when translation is enabled |
translationActorId | string | β | Apify actor ID for translation (e.g. tkapler/deepl-actor) when Use translation is enabled |
translationBatchMode | boolean | true | Send all page texts in one batch to the translation actor; falls back to sequential mode if unsupported |
Output extras (new)
| Field | Type | Default | Description |
|---|---|---|---|
outputPages | boolean | false | Push one dataset item per crawled page with page-level extracted fields. |
outputDiff | boolean | false | Compare current brandKit with previous cached snapshot and output a delta item. |
Webhook options (new)
| Field | Type | Default | Description |
|---|---|---|---|
webhook.url | string | β | Webhook destination URL (preferred over callbackUrl). |
webhook.events | string[] | ["completed","failed"] | Events to send: started, completed, failed. |
webhook.retries | integer | 1 | Retry attempts on network error / 5xx. |
webhook.retryDelayMs | integer | 2000 | Delay between retries. |
webhook.timeoutMs | integer | 10000 | Request timeout per attempt. |
webhook.secret | string | β | Optional HMAC signing secret (x-branddna-signature: sha256=...). |
webhook.headers | object | β | Optional custom headers map. |
callbackUrl | string | β | Legacy fallback URL used when webhook.url is not set. |
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 optionallysourceLanguage(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: dataset items with type: brandKit, type: templates, type: page, type: delta, type: comparison, or type: brandDNA (single item); each item includes startUrl when using multiple URLs.
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
Watch the demo here: https://youtu.be/Eaxrf_17DXM
π Deterministic by Design
Unlike AI-driven analysis:
β repeatable outputs β explainable heuristics β no hallucinations β stable automation pipelines
Perfect for production workflows.
π SEO Keywords Covered
brand analysis tool β’ website brand extractor β’ brand identity scraper β’ marketing template generator β’ brand audit automation β’ deterministic brand intelligence
π 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
HTML-based crawling (no SPA rendering)Now with SPA support!English-centric heuristicsMulti-language (en, de) with optional auto-detection and translation- 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.