Verified leads, not scraped rows

Finding contact details is easy. Throwing away the ones that will waste your time is the product.

Buying a lead list gets you rows. Most of them are dead numbers, role addresses and businesses that stopped trading two years ago. SMAAI's scraper is built around the opposite assumption: finding contact details is the easy part, and the real work is throwing away the ones that will waste your time.

Two ways in

Scan a URL. Point it at a company site and it reads the page, then follows the links most likely to hold real contact details — contact, about, connect, reach and support pages — rather than stopping at the homepage.

Search by category and location. Describe who you want ("interior designers, Kochi") and it builds the list. Search runs through Serper where a key is configured, and falls back to DuckDuckGo otherwise — chosen deliberately, because Google blocks server IPs and a scraper that silently returns nothing from production is worse than no scraper.

A single query returns the same few dozen results however many times you ask, so the scraper fans each category across multiple cities and phrasings, then over-fetches a candidate pool three times the size of your requested cap before filtering down. Results can be scoped to India, India plus international, or international only.

It runs on plain HTTP and HTML parsing rather than a headless browser, which is why it runs server-side reliably instead of falling over in a container.

What it pulls out

The four-filter quality gate

This is where most of the value is. Every scraped contact passes four filters before it reaches your CRM.

1. Country-aware phone validation

Length rules per country — India, US, Canada, UK, Australia, UAE, Singapore, Germany and France — with country codes stripped first. Indian mobiles must start 6–9. Numbers that are all one digit, or a straight run like 1234567890, are discarded. These are the fake numbers businesses put on a site to satisfy a form field.

2. Is the business still alive?

A language model reads the page content, metadata and footer copyright year and judges whether the business has shown signs of activity in the last fourteen days. Dormant sites are dropped. A beautiful contact record for a company that closed in 2023 is not a lead.

3. Phone genuineness scoring

Each surviving number is scored from 0 to 1 on formatting, how close it sits to words like "contact", "call us" or "WhatsApp", whether the country matches the business, whether it pairs with a deliverable email, and whether it appears on spam blocklists. Anything below 0.6 is rejected.

4. Channel separation

Numbers are split into WhatsApp-reachable, voice-only, and Telegram handles — so a campaign never sends a WhatsApp message to a landline, which is the fastest way to damage a young sender's quality rating.

Rejected contacts are returned alongside the accepted ones with the reason attached. You can see what was thrown away and why, instead of trusting a black box.

The CRM: transparent lead scoring

Every lead carries a score from 0 to 100, and the breakdown is visible — you can always see why a lead is hot:

70 or above marks a hot lead. Leads move through lifecycle stages with the change timestamped, carry UTM attribution back to the campaign that produced them, and hold email, phone, WhatsApp and LinkedIn as separate channels so follow-up can pick the one most likely to land.

Contacts flagged do-not-contact are excluded from scoring and from every outbound cadence, permanently.

Limits

Up to 50 results per scan. Row limits by plan: 500 on Starter, 5,000 on Growth, unlimited on Scale. CRM contacts are capped at 1,000 on Starter and 10,000 on Growth. Re-scanning a source replaces its scraped rows but never touches leads you uploaded or that arrived through outreach.

Availability. Scraping and CRM read access are included from Starter. Writing to the CRM and lead scoring require Growth; automated follow-up cadences require Scale.

Step inside.

The platform reveals itself to those who enter.

Begin