
Website Content Crawler
scrape.ly/store/querystone/website-content-crawlerAIDeveloper tools
1 monthly user

Get the logo of any website in bulk: best logo and square icon URLs with format and size, header wordmark, favicon, brand name, brand colors and social profiles. Paste domains or URLs. Fast, no login needed.
Get the logo of any website in bulk. Paste domains or URLs and get the best logo URL, a square brand icon, the header wordmark, favicon, dimensions and format, the brand name, brand colors and the company's social profiles, all from the site itself. No login, no API key, and dozens of websites per minute.
<img> and inline SVG), apple-touch icons, web app manifest icons, Open Graph images and favicons, then ranks them.logoUrl should be the square icon (default) or the header logo.| Field | What it does |
|---|---|
urls | Domains, URLs or email addresses, one per line |
logoStyle | icon (square brand icon, default) or wordmark (header logo) for logoUrl |
includeCandidates | Ranked list of every logo and icon found |
extractColors | Main logo colors as hex codes |
includeSocialProfiles | Social media links from the home page |
maxCandidatesToCheck | How many images to download and verify per site (default 6) |
residentialFallback | Retry blocked sites through a residential proxy (default on) |
maxConcurrency | Websites checked in parallel (default 10) |
{
"urls": ["stripe.com", "https://www.airbnb.com", "github.com", "https://www.bbc.co.uk", "zalando.de"],
"logoStyle": "icon",
"extractColors": true,
"includeSocialProfiles": true
}
| Field | Description |
|---|---|
domain, url | The domain and the page that was read (after redirects) |
brandName | Brand or company name |
logoUrl, logoType, logoFormat, logoWidth, logoHeight | The best logo, where it came from, its format and size in pixels |
iconUrl, iconWidth, iconHeight | The best square icon (apple-touch icon, manifest icon or SVG favicon) |
headerLogoUrl | The logo shown in the site header (may be an inline SVG as a data: URL) |
faviconUrl, ogImageUrl | Favicon and social sharing image |
primaryColors, themeColor | Main logo colors and the site's theme color |
socialProfiles | X/Twitter, Facebook, Instagram, LinkedIn, YouTube, TikTok, Pinterest, GitHub and more |
candidates | Every verified candidate with type, format, size and score |
title, description | Home page title and description |
status, note | Always found (only websites with a logo are saved); note says when the public favicon service was used |
{
"inputUrl": "stripe.com",
"domain": "stripe.com",
"url": "https://stripe.com/",
"brandName": "Stripe",
"logoUrl": "https://images.stripeassets.com/fzn2n1nzq965/4vVgZi0ZMoEzOhkcv7EVwK/8cce6fdcf2733b2ec8e99548908847ed/favicon.png?w=180&h=180",
"logoType": "apple-touch-icon",
"logoFormat": "png",
"logoWidth": 180,
"logoHeight": 180,
"iconUrl": "https://images.stripeassets.com/fzn2n1nzq965/4vVgZi0ZMoEzOhkcv7EVwK/8cce6fdcf2733b2ec8e99548908847ed/favicon.png?w=180&h=180",
"headerLogoUrl": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My...",
"faviconUrl": "https://images.stripeassets.com/fzn2n1nzq965/1hgcBNd12BfT9VLgbId7By/01d91920114b124fb4cf6d448f9f06eb/favicon.svg",
"primaryColors": ["#533afd", "#f1efff"],
"socialProfiles": {
"twitter": "https://twitter.com/stripe",
"linkedin": "https://www.linkedin.com/company/stripe",
"github": "https://github.com/stripe",
"youtube": "https://youtube.com/@stripe"
},
"candidates": [
{"url": "https://images.stripeassets.com/.../favicon.svg", "type": "favicon-svg", "format": "svg", "width": 512, "height": 512, "score": 94}
],
"status": "found",
"note": null
}
$0.006 per website with a logo found ($6 per 1,000), plus a little platform usage. Websites where no logo is found, and sites that cannot be loaded, are free: they are not saved as rows and are listed in the run's status message and in the OUTPUT record (failedInputs).
Do I need a login, API key or proxy? No. Proxies are included; blocked sites are retried through residential proxies automatically.
Where do the logos come from? From each website itself: structured data, the header, icons the site declares for phones and browsers, and its favicon. If a site cannot be loaded at all, a public favicon service is used as a last resort and marked as favicon-service.
Why is logoUrl a square icon and not the wordmark? Square icons look consistent in lists and tables. Set Preferred logo to Header logo to get the wordmark in logoUrl; headerLogoUrl always has it when found.
What if a field is empty? The site did not provide it (for example no social links on the home page). Websites without a logo are not saved and cost nothing; they are listed under failedInputs in the OUTPUT record.
Is it legal? It reads public home pages and the images they link to, like a browser does. Check each brand's guidelines before you reuse a logo.
Can I schedule it or use the API? Yes, through schedules, the API, integrations and the MCP server.
data: URLs.Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
urlsarrayRequiredWebsites
Domains or URLs, one per line (stripe.com, https://www.bbc.co.uk, or an email address such as jane@acme.com). Duplicates are removed.
logoStyleenumOptionaldefault "icon"Preferred logo
Which image goes into 'logoUrl'. Both the best icon ('iconUrl') and the header logo ('headerLogoUrl') are always returned when found.
Extra data per website.
includeCandidatesbooleanOptionaldefault trueAll candidates
Add a ranked list of every logo and icon found, with type, format and dimensions.
extractColorsbooleanOptionaldefault trueBrand colors
Add the main colors of the logo as hex codes, plus the site's theme color.
includeSocialProfilesbooleanOptionaldefault trueSocial profiles
Add the brand's social media links found on the home page (X/Twitter, Facebook, Instagram, LinkedIn, YouTube, TikTok, GitHub and more).
maxCandidatesToCheckintegerOptionaldefault 6Images to check per website
How many of the best candidates are downloaded to confirm they work and to read their size. Broken links are dropped.
residentialFallbackbooleanOptionaldefault trueRetry blocked sites with residential proxies
When a site blocks the first request, retry once through a residential proxy in the site's country. Turn off to never use residential traffic.
maxConcurrencyintegerOptionaldefault 10Parallel websites
How many websites to check at the same time.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Proxy for the first attempt. Datacenter proxies work for most sites; blocked sites are retried through residential proxies when the option above is on.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| logoUrl | any | Logo |
| domain | any | Domain |
| brandName | any | Brand |
| logoType | any | Source |
| logoFormat | any | Format |
| logoWidth | any | Width |
| logoHeight | any | Height |
| iconUrl | any | Icon |
| headerLogoUrl | any | Header logo |
| primaryColors | any | Colors |
| status | any | Status |
| note | any | Note |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Logo found | One website with a logo found and saved to the dataset. Websites without a logo are free. | $0.006 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('querystone/website-logo-finder').call({
"urls": [
"stripe.com",
"https://www.airbnb.com",
"github.com",
"https://www.bbc.co.uk",
"zalando.de"
],
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run querystone/website-logo-finderPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=querystone/website-logo-finder"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Icon logos with brand colors and social profiles.
Text logos for Stripe, Airbnb and GitHub with colors.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.