Website Brand Identity Scraper
Pricing
from $1.42 / 1,000 item extracteds
Website Brand Identity Scraper
Analyze public company websites for source-attributed logos, imagery, colors, fonts, messaging, calls to action, and evidence-based brand themes and tone.
Pricing
from $1.42 / 1,000 item extracteds
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
8 days ago
Last modified
Categories
Share
Turn public company websites into normalized website brand identity records for CRM enrichment, creative research, and brand audits. Supply one or many URLs and receive source-attributed logo and image candidates, CSS colors, font declarations, messaging, calls to action, and deterministic theme and tone signals.
The Actor uses public HTML and linked CSS. It does not invent a brand book, use private accounts, or present heuristic labels as facts. Every asset, color, and font retains the page or stylesheet where it was found; derived themes and tone include evidence and confidence.
What does Website Brand Identity Scraper extract?
Each successful website produces one record containing:
| Group | Fields |
|---|---|
| Identity | site name, input URL, final URL, domain |
| Logos | ranked logo/favicon candidates, source URL, source type, label, confidence |
| Imagery | Open Graph, Twitter, hero, and content image candidates |
| Color palette | frequent CSS hex, RGB, and HSL values with occurrence counts and sources |
| Fonts | font family, original declaration, and source page or stylesheet |
| Messaging | title, meta description, H1/H2 headings, tagline candidates, calls to action |
| Derived identity | brand themes and messaging tone with evidence and bounded confidence |
| Provenance | all successfully analyzed page and stylesheet URLs, analysis timestamp |
Failed websites still produce an uncharged status: failed record. This preserves one-to-one traceability in bulk enrichment jobs.
Who is it for?
- Revenue operations teams enriching company and account records.
- Creative teams preparing references before a campaign or redesign.
- Agencies comparing visual identity and calls to action across client websites.
- Data teams building source-attributed brand datasets.
- Developers who need structured website brand guidelines inputs without manual copy-and-paste.
Why use this website brand identity extractor?
Unlike a logo-only utility, this Actor combines visual candidates with messaging and evidence-based derived signals. Unlike a generative brand kit, it reports what the public website exposes and keeps provenance. One successful website incurs one item charge regardless of how many logo, color, font, image, or messaging candidates it contains.
Getting started
- Open the Actor input.
- Add public company homepages to Website URLs.
- Choose the maximum number of websites.
- Keep the stylesheet limit at 8 for normal analysis, increase it for CSS-heavy sites, or set it to 0 for HTML-only analysis.
- Start the run and open the default dataset.
- Filter
statusto separate successful analyses from failures.
Input parameters
startUrls
Required array of public HTTP or HTTPS website URLs. The Actor accepts request-list objects and deduplicates exact normalized inputs. URLs containing credentials, local hosts, and private or reserved network addresses are rejected.
maxItems
Maximum unique websites to analyze, from 1 to 100. Processing follows input order.
maxStylesheetsPerWebsite
Maximum linked CSS files to fetch per website, from 0 to 20. A higher value can discover more fonts and colors but takes longer. Failed stylesheet requests are skipped while the page analysis continues.
Example input
{"startUrls": [{ "url": "https://stripe.com" },{ "url": "https://slack.com" },{ "url": "https://www.hubspot.com" }],"maxItems": 3,"maxStylesheetsPerWebsite": 8}
Example output
The arrays below are shortened; actual records may contain more candidates.
{"inputUrl": "https://stripe.com/","finalUrl": "https://stripe.com/de","domain": "stripe.com","status": "ok","error": null,"siteName": "Online-Bezahldienst und Zahlungsdienstleister | Stripe","logos": [{"url": "https://images.stripeassets.com/example/favicon.svg","sourceUrl": "https://stripe.com/de","sourceType": "icon-link","label": null,"confidence": 0.68}],"colors": [{"value": "#635bff","occurrences": 12,"sourceUrls": ["https://stripe.com/example.css"]}],"fonts": [],"messaging": {"title": "Online-Bezahldienst und Zahlungsdienstleister | Stripe","metaDescription": "Financial infrastructure for the internet.","headings": ["Financial infrastructure to grow your revenue"],"taglines": [],"callsToAction": ["Start now"]},"themes": [{ "label": "growth", "confidence": 0.57, "evidence": ["grow"] }],"tone": [{ "label": "direct", "confidence": 0.57, "evidence": ["start"] }],"sourceUrls": ["https://stripe.com/de"],"analyzedAt": "2026-01-15T12:00:00.000Z"}
URLs can redirect according to geography, so text and source URLs may differ between runs.
How are confidence and evidence calculated?
Confidence is deterministic, not an AI probability. HTML logo candidates must combine brand-name evidence with explicit logo/brandmark structure or a home-linked header position; long descriptive labels, photographic assets, and product/icon clues are penalized. Explicit logo metadata ranks highest, while favicons are retained at moderate confidence. Social metadata receives high image confidence. Theme and tone confidence increases only when configured evidence terms occur in extracted messaging.
Treat candidates as ranked leads. Confirm selected assets before publishing creative work, especially when a homepage exposes several brand variants.
How much does it cost to analyze website brand identity?
The PPE schedule charges $0.001 per run plus the active tier price for each successfully analyzed website. At the BRONZE tier, a successful website is $0.00236.
Example BRONZE totals:
| Successful websites | Estimated Actor charge |
|---|---|
| 1 | $0.00336 |
| 10 | $0.02460 |
| 100 | $0.23700 |
Failed website rows have no item charge. The Apify Console displays the active tier and exact run charge before and after execution. The six usage tiers decrease from FREE through DIAMOND; Apify applies the tier associated with the user's plan.
CRM enrichment workflow
Map company website fields into startUrls, run the Actor in batches, and join results back on inputUrl or domain. Store status, error, and analyzedAt so retries are explicit. Flatten colors, fonts, themes, or calls to action only when your destination system needs scalar fields.
Creative benchmarking workflow
Use logo and image candidates as an evidence queue, compare the most frequent colors, and review font sources before downloading any asset. Messaging headings and CTA arrays help compare positioning without treating every page link as a CTA.
Monitoring and change detection
Schedule an Apify Task with the same URL list, export each dataset, and compare normalized fields in your data warehouse or automation tool. The Actor returns current observations; it does not itself send alerts, retain prior snapshots, or claim that every detected difference is a deliberate rebrand.
API usage with cURL
curl -X POST \"https://api.apify.com/v2/acts/automation-lab~website-brand-identity-extractor/runs?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"startUrls":[{"url":"https://stripe.com"}],"maxItems":1}'
API usage with JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/website-brand-identity-extractor').call({startUrls: [{ url: 'https://stripe.com' }],maxItems: 1,maxStylesheetsPerWebsite: 8,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
API usage with Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("automation-lab/website-brand-identity-extractor").call(run_input={"startUrls": [{"url": "https://stripe.com"}],"maxItems": 1,})items = client.dataset(run["defaultDatasetId"]).list_items().itemsprint(items)
Use with MCP and AI assistants
Add the Apify MCP server to Claude Code:
claude mcp add --transport http apify \"https://mcp.apify.com?tools=automation-lab/website-brand-identity-extractor"
Claude Desktop, Cursor, and VS Code can use the same HTTP MCP configuration. Add this JSON in the client-specific MCP settings panel:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=automation-lab/website-brand-identity-extractor"}}}
Example prompts:
- “Analyze Stripe and Slack and compare their top CSS colors and calls to action.”
- “Extract source-attributed website brand identity fields for these CRM company URLs.”
- “Show only failed websites and explain which URLs should be retried.”
Limits and failure behavior
- The Actor analyzes the supplied page, usually a homepage; it does not crawl an entire domain.
- Client-rendered-only text, canvas content, and runtime CSS may be absent from SSR HTML.
- Protected, login-only, CAPTCHA, or rate-limited pages may return
status: failed. - CSS variables without literal color values are not resolved through a browser rendering engine.
- Logo candidates are precision-filtered, but ambiguous brand variants can remain; use confidence, label, source, and human review.
- Theme and tone labels cover a bounded vocabulary and are not a complete brand strategy assessment.
- Images and fonts are referenced, not downloaded or relicensed.
If every website fails, the run exits as failed after writing diagnostic rows. If at least one succeeds, useful and failed rows remain available together.
Responsible use and legality
Analyze only public websites you are authorized to access. Respect website terms, robots guidance where applicable, intellectual-property rights, and local law. A public asset URL does not grant permission to reuse a logo, image, font, or copy. Keep source attribution and obtain the required license or brand approval before commercial reuse.
Troubleshooting
Why are colors or fonts empty?
The site may load style values at runtime, use CSS variables without literal values, block stylesheet requests, or exceed the configured stylesheet limit. Increase maxStylesheetsPerWebsite within the supported limit, then inspect sourceUrls.
Why does the final URL use another locale?
Some sites redirect based on network geography or cookies. The Actor records both inputUrl and finalUrl; messaging reflects the final public page actually analyzed.
Why are there multiple logos?
Modern homepages often expose header marks, dark/light variants, and favicons. The Actor precision-filters company candidates and intentionally returns evidence rather than claiming certainty. Sort by confidence and check labels and source URLs.
Are failed websites charged?
The one-time start event still applies, but failed website rows do not emit the per-website item event.
Related Automation Lab actors
- Website Image Extractor for exhaustive image-level rows and deeper page crawling.
- JavaScript Website Contact Extractor for source-attributed public contact details on rendered websites.
- Company Leadership Scraper for public leadership and role enrichment.
FAQ
Does this generate website brand guidelines?
It produces structured evidence that can support a brand audit or style-guide workflow. It does not generate an authoritative brand manual or replace a designer.
Does it use AI?
No. Extraction and derived labels are deterministic. Evidence terms are included so users can review every theme and tone signal.
Can I analyze more than 100 websites?
Split larger lists across Tasks or API runs. The per-run cap keeps fetches bounded and makes failures easier to retry.
Can it scrape private brand portals?
No. Only anonymous public HTTP and HTTPS pages are supported; credentials in URLs and private network addresses are rejected.
