Website Redesign Lead Scorer for Agencies
Pricing
from $15.00 / 1,000 sites
Website Redesign Lead Scorer for Agencies
I turn a website list into ranked redesign prospects with dated-content signals, pre-choice tracker observations, automated accessibility findings and technical checks. Each row includes the evidence and suggested outreach angles.
Pricing
from $15.00 / 1,000 sites
Rating
0.0
(0)
Developer
Jessy Mariau
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
3 days ago
Last modified
Categories
Share
Turn a list of websites into a shortlist you can explain. Each row gives you a redesign opportunity score, the measured reasons behind it, and suggested opening lines grounded in those observations.
This is a prospecting tool for web designers and agencies. It checks dated-content signals, trackers loading before a visitor's choice, automated accessibility findings and technical basics. It does not judge visual design quality or decide legal compliance.
Open a sample shortlist: leave Websites empty and run the free demo. For real targets, 100 sites that produce scores cost $1.50 in Actor events. Up to five pages per site are included in that event price. Optional proxy traffic is extra; failed sites are not charged.
What the demo returns
These are fictional fixture sites scored by the actual rubric. The results were checked on 8 September 2026; they are examples of output, not live prospects.
| Site | Band | One observed reason |
|---|---|---|
| demo-stale-plumber.example | HOT | Footer year 2019; newest sitemap page 2021 |
| demo-current-studio.example | COLD | Google Analytics loads before a visitor's choice |
The first row also records 16 serious or critical automated accessibility findings and three named tracking services. Expand the row to see the numbers and suggested pitch angles. A low score is not a clean bill of health; check browser_used, a11y_ran and checks_run before comparing results.
What it does
Each website is loaded in a real Chromium, the way a visitor would load it. Four things get measured.
Dated-content signals. The newest lastmod in the sitemap. The newest date in the page's structured data and in its <time> elements. The footer copyright year, the Last-Modified header, the <meta name="generator"> tag, the jQuery version. Dates the site publishes about its own content carry the weight here. A footer year is usually printed by a script and rolls over on its own every January, so it only gets used when there is nothing else to go on.
What loads before a visitor chooses anything. Every network request is recorded from the moment the page starts loading, and for three seconds after. Nothing is clicked. No banner is dismissed. Whatever fired in that window fired before a visitor had a say. The Actor then names the well-known tracking services it recognises. It counts the cookies already set, split first-party and third-party. It looks for a privacy policy link, and for a consent tool from a list of the usual vendors.
Accessibility. axe-core is injected into the rendered page and run against the WCAG 2.1 A and AA rules. You get the number of failing elements, the split by impact, and the five rules that failed on the most elements.
The basics. Mobile viewport tag. https, and whether the plain http address redirects to it. Plain-http files on a secure page. Page weight and request count. Contact form present or absent, plus the social networks linked.
Those four feed a documented rubric that produces the score. No personal data is collected anywhere: phone is a yes or no, social links are hostnames only, and no email address is ever read or stored.
What you need
Nothing. No API key, no account anywhere, and no proxy for the great majority of business websites.
Run it with no websites at all and you get two sample rows in demo mode, charged nothing, so the shape is visible before you point it at a real list.
How to run it
A prospecting list, homepage only, all four checks:
{"websites": "smithandsonsplumbing.co.uk\nthe-old-mill-cafe.com\nhttps://example-garage.co.uk","maxPages": 1}
Deeper on a shortlist, following up to five internal pages per site:
{"websites": "smithandsonsplumbing.co.uk\nthe-old-mill-cafe.com","maxPages": 5,"checks": ["freshness", "accessibility", "consent", "tech"]}
A fast first pass with no browser. You keep the copyright year, generator, viewport and https. You lose the tracker list and the axe-core numbers:
{"websites": "a-very-long-list-pasted-here","useBrowser": false}
The OUTPUT record in the key-value store holds the summary: sites processed, the HOT, WARM and COLD counts, events charged, and the top 10 by score with their first pitch angle.
Output fields
One row per website, grouped the same way the checks are.
The result itself, and what happened during the visit.
| Field | What it holds |
|---|---|
input | your line, exactly as pasted |
final_url, status | the final URL after redirects, and its HTTP status |
browser_used, browser_error | false on a browser failure, plus the reason |
pages_scanned, page_title | pages behind this row, and the homepage title |
redesign_score, score_band | 0 to 100, and HOT, WARM or COLD |
reasons | every rubric line triggered, with its numbers and points |
pitch_angles | the top three of those, one pasteable sentence each |
checks_run | the checks switched on, for a fair comparison between rows |
error | the reason for no score, or null |
checked_at | when |
These are the freshness signals.
| Field | What it holds |
|---|---|
newest_signal_year, newest_signal_source, stale_years | the newest dated evidence, its origin, and its age in years |
sitemap_newest_lastmod, copyright_year | the two strongest individual signals |
jsonld_newest_year, time_tag_newest_year, content_newest_year | dates from the page's own markup |
last_modified | the header, reported but never scored |
These cover consent and tracking.
| Field | What it holds |
|---|---|
consent_view_available | false without a browser, marking the rest of this group unknown rather than clean |
cmp_detected | the consent tool found, or null |
trackers_before_consent, trackers_before_consent_count | named tracking services from before any consent choice |
cookies_before_consent, third_party_cookies_before_consent, first_party_cookies_before_consent | cookies already set at that point |
has_privacy_link, has_cookie_policy_link | booleans |
These come from axe-core and the cheap static counts.
| Field | What it holds |
|---|---|
a11y_ran | false on an axe failure, with every number below null rather than zero |
a11y_violations_total, a11y_critical, a11y_serious, a11y_moderate, a11y_minor, a11y_serious_plus_critical | failing elements, not failing rules |
a11y_rules_failed, a11y_top_rules | the rule count, and the five worst with their element counts |
images_total, images_without_alt, missing_html_lang, inputs_without_label, empty_links_or_buttons, heading_level_skips | cheap static counts, present even without axe |
These are the technical basics.
| Field | What it holds |
|---|---|
page_weight_kb, request_count | HTML, CSS and JS only, with images, media and fonts blocked |
has_viewport_meta, uses_https, redirects_to_https, mixed_content_requests | the basics |
generator, jquery_version | the page's own claim about what built it |
has_contact_form, phone_found, social_links | a boolean, a boolean, and hostnames |
The score
Six lines, adding up to 100.
| Signal | Max | Points |
|---|---|---|
| Staleness | 35 | years since the newest dated evidence: 6 or more → 35, 4 to 5 → 26, 3 → 18, 2 → 10, newer → 0 |
| Accessibility | 25 | 4 per critical failing element, 1.5 per serious one, capped at 25 |
| Consent and tracking | 15 | 4 per tracking service loaded before a choice, up to 12; plus 3 for no consent tool; plus 3 for no privacy policy link; capped at 15 |
| Mobile viewport | 8 | 8 for no viewport meta tag |
| https | 7 | 7 for no https at all; otherwise 3 for a plain http address that never redirects, or for plain-http files on the page |
| Old platform | 10 | 6 for jQuery 1.x, 4 for jQuery 2.x, 4 for a generator tag naming old WordPress, Joomla 1 to 3, Drupal 7, FrontPage, Dreamweaver or MSHTML |
HOT is 70 and above. WARM is 40 to 69. COLD is under 40.
A line only fires when it has something to say, and an unmeasurable signal never scores at all. A site whose accessibility could not be tested does not collect 0 accessibility points as though it had passed. It gets no accessibility line, and a11y_ran says why. Turning a check off in the input removes its lines too, so only compare scores across runs with the same checks.
Pricing
Pay per event: one site-scored charge per site that produced a score. A site that could not be fetched, that answered 403 or 404, or that you typed wrong costs nothing at all. The demo run costs nothing. Following internal pages with maxPages adds no charge, and neither does switching all four checks on. The price is per site, whatever you turn on.
Limits
- The homepage only, unless you raise
maxPages. That is deliberate. For prospecting, the homepage is what the buyer will look at and what you will talk about. - The consent findings describe what the page loaded on its own, before anyone chose anything, and they stop there. Whether any of it breaks a law is a question for the prospect and their lawyer. It also makes a far better opening line than an accusation.
- The tracking services named come from a list of well-known ones. A site can run something the list does not cover, so read the count as a floor.
- Some large publishers serve their consent tool from their own domain, so ad blockers cannot see it. That hides the vendor name from this Actor too. Where the shape is there but the vendor is not identifiable,
cmp_detectedsaysa first-party consent toolrather than guessing at one. - The accessibility numbers are axe-core on the pages scanned, against WCAG 2.1 A and AA. Automated testing catches a portion of the real barriers. Treat the number as a reason to open a conversation, and never sell it as a WCAG audit.
- Blocking images shifts the accessibility count very slightly, because an image that never loads never reaches the DOM as one. I measured this on a live site: 7 critical failures with images on, 6 with them off, a single
image-altnode of difference. Everything else matched to the node. - A footer copyright year is usually generated, so it loses to dates the site publishes about its content.
Last-Modifiedis a server file timestamp rather than evidence that anyone touched the design, so it appears in the row and stays out of the score. - JS-heavy sites and sites behind a bot check can beat the browser. Those fall back to a plain HTTP read,
browser_usedcomes back false, and the tracker and axe fields come back null rather than zero. Any site answering 400 or above gets no score at all, because treating a bot-block page as a homepage is how a lead list fills up with confident nonsense. - Small business sites on shared hosting sometimes refuse a datacentre IP outright. One site in my own testing returned 200 from my laptop and 401 from an Apify server on the same afternoon. That is the case
proxyConfigurationexists for, and the row says401rather than inventing a score. - Page weight covers HTML, CSS and JS. Images, media and fonts are blocked to keep runs cheap, so the number sits below what a visitor really downloads.
- Only public http and https hostnames are accepted. IP addresses, local hostnames and everything else are refused before any request goes out.
Pair it with a workflow
If you run n8n, my free templates on https://n8n.io/creators/fractional-hq take a list like this Actor's output and turn it into a cold email draft per prospect, plus the follow-ups. Filter to score_band of HOT, drop pitch_angles[0] into the opening sentence, and the specific detail that makes the email land is already written for you.
The scoring model and its blind spots are written up at https://fractionalhq.uk/use-cases/redesign-lead-scoring
Use it from an AI agent
An AI agent can call this Actor directly as an MCP server, and I use it that way from my own estate. The endpoint is https://fractionalhqforyou--website-redesign-lead-scorer.apify.actor/mcp and it exposes one tool, score_website_redesign_leads, which accepts the same websites list and returns the scored rows in the reply. You pay the same per-event price as a normal run. If your client cannot take a raw endpoint, add apify/actors-mcp-server and name fractionalhqforyou/website-redesign-lead-scorer as the Actor to load.
Related Actors I publish
A scored website list usually needs a source of sites and a way to qualify the owners, which is what these siblings do.
- Local Business Health Scorer: finds local businesses on Google Maps and scores how well each one looks after its listing.
- European Accessibility Act Reporter: collects automated accessibility findings and writes a remediation report.
- UK Companies House Enrichment: adds the filing record behind a UK company name so you know who you are dealing with.
Built by Fractional HQ
Independent design and automation by Jessy Mariau. For setup or a custom integration, send a brief.