Works with the AI Agents you already use

    Claude CodeClaude CodeCursorCursorCodex CLICodex CLIMuseMuseDotsDots+21 more

    Nex Scraper Politeness Pattern

    6

    Generates a polite async Python fetch layer with per-domain delays, robots.txt checks, retry backoff, and a generic-mailbox email extractor.

    $39

    Secure checkout via Stripe

    Money-back guarantee

    Converts to your local currency at checkout

    2 usesSecurity scanned
    nex-scraper-politeness-pattern

    nex-scraper-politeness-pattern

    Example session with this skill installed

    I need a Python script to scrape 200 business websites for their contact info. It needs to be polite so I don't get IP banned, and I only want general inboxes like info or hello.

    • Read your context and instructions
    • Compiled the nex-scraper-politeness-pattern

    Generated PoliteScraper package.

    • Global concurrency: 5
    • Per-domain delay: 3s
    • Robots.txt: Enabled
    • Filter: Role-based emails only (skipping personal names).

    Use scraper.fetch_many(urls) to retrieve content securely without triggering bot detection.

    Connects securely to your tools. The creator never sees your data.

    About this skill

    What it does

    • Generates polite_scraper.py, a PoliteScraper async context manager with fetch() and fetch_many() built on httpx.
    • Enforces a global concurrency cap (semaphore) plus a per-domain delay, so many domains run in parallel while any single host is touched gently.
    • Checks robots.txt before fetching (cached per domain) and sends an honest identifying User-Agent with a contact URL, never a spoofed browser string.
    • Retries transient failures (timeout, 5xx, transport errors) with exponential backoff; permanent failures return a clean FetchResult instead of crashing the batch.
    • Ships email_extract.py, a generic-mailbox extractor that keeps only role inboxes (info, contact, hello) and skips personal addresses, plus requirements.txt.

    Why use this

    The delay and concurrency cap are what keep you off blocklists, and the role-inbox gate is what keeps B2B contact-gathering defensible. This is the actual fetch layer a Belgian AI agency uses to enrich prospects without behaving like a bad bot, generalised into a reusable module: you bring the parsing, it makes the fetching well-behaved.

    See it in action

    Prompt:

    I have a few hundred business URLs and I want to fetch them without getting blocked, and pull only the general contact email from each.

    Result:

    from polite_scraper import PoliteScraper
    from email_extract import extract_generic_emails
    
    async with PoliteScraper(
        max_concurrency=2,
        per_domain_delay=3.0,
        user_agent=MyBot/1.0 (+https://example.com/bot),
        timeout=15.0,
        max_retries=3,
        respect_robots=True,
    ) as scraper:
        results = await scraper.fetch_many(urls)
    
    for r in results:
        if r.ok:
            emails = extract_generic_emails(r.text)
            # keeps info@, contact@, hello@; drops jan.peeters@

    Use cases

    • Enriching a prospect list by fetching a few hundred business websites overnight without tripping rate limits.
    • Adding timeouts, retries, and backoff to an existing crawler that dies on one bad URL.
    • Gathering only published role inboxes for B2B outreach, skipping personal addresses.
    • Making an internal batch fetcher a visible, well-behaved robots.txt citizen.

    Known limitations

    • Fetch layer only: parsing beyond the email extractor is your concern.
    • Fetches raw HTML; JS-rendered sites need a headless browser tool instead.
    • Deliberately slow by design; it is built to avoid high-speed bulk crawling, not to enable it.

    FAQ

    What exactly is in the download?

    SKILL.md, three assets (polite_scraper.py, email_extract.py, requirements.txt), and references/politeness-rules.md explaining why each control matters and how to tune it.

    Which agents does it work with?

    Claude Code, Claude Cowork, Cursor, Codex CLI, and any agent that reads the SKILL.md format.

    Do I need anything else?

    Python with httpx (the only dependency). No API keys, no proxy service.

    Why does the email extractor skip personal addresses?

    A published business inbox like info@ is defensible for B2B outreach; harvesting a named person's address is what gets you blocked and is hard to justify under GDPR-oriented practice.

    • Static scraping only: does not execute JavaScript.
    • Basic proxy support: no built-in rotation.
    • Regex extraction: may miss obfuscated emails.

    How to use

    1. 1

      Connect your agent to the Agensi MCP

      Copy the prompt and paste it into Claude, ChatGPT, Cursor or any agent that supports MCP. It sets up the connection for you. Manual setup

    2. 2

      Sign in to Agensi

      Your agent shows a sign-in link. Sign in and click Allow.

    3. 3

      Ask for what you need

      Your agent loads this skill and uses it on your task. It always asks before any payment.

    Reviews

    No reviews yet

    Be one of the first to try it. Every listed skill goes through the trust checks below.

    Security scanned

    Checked by our 8-point scan before listing

    2 uses

    Times used to date

    Money-back guarantee

    Doesn't do what its page promises? You get your money back.

    Trust & safety

    Security scan

    Security scan passed 3 months ago

    Accounts
    Nex AiFormspree

    Permissions

    Terminal / Shell

    Allowed Hosts

    nex-ai.be
    schema.org
    fonts.googleapis.com
    fonts.gstatic.com
    formspree.io

    File Scopes

    nex-salon-beauty-template/**
    Listed5 months ago
    Updated3 months ago

    What's inside

    Frequently Asked Questions

    This skill solves the problem of IP blocking and 'bad bot' flagging by implementing per-domain rate limiting, robots.txt compliance, and automatic exponential backoff for network errors.

    You will receive a complete Python package including the PoliteScraper engine (polite_scraper.py), a specialized email extraction module (email_extract.py), and a requirements.txt file.

    Yes, it is built using 'httpx' and 'asyncio', allowing you to process multiple URLs simultaneously while the internal semaphore manages the specific wait times for each host.

    This skill is designed for Python-based AI agents and frameworks that support asynchronous execution, making it ideal for integration into custom LLM agents or autonomous web-research tools.

    The included email extractor is specifically designed for lead generation, featuring regex-based logic that prioritizes role-based emails (like support@ or sales@) while filtering out sensitive personal addresses.

    The skill is designed for easy integration; simply install the dependencies from the requirements file and use the scraper as an async context manager within your existing Python agent script.

    New in Data & Databases