← Back to Skills Marketplace
lukem121

Scrape Emails By URL

by Luke · GitHub ↗ · v0.1.5
cross-platform ⚠ suspicious
1049
Downloads
0
Stars
1
Active Installs
6
Versions
Install in OpenClaw
/install find-emails
Description
Crawl websites locally with crawl4ai to extract contact emails. Accepts multiple URLs and outputs domain-grouped results for clear attribution. Uses deep cra...
README (SKILL.md)

Find Emails

CLI for crawling websites locally via crawl4ai and extracting contact emails from pages likely to contain them (contact, about, support, team, etc.).

Setup

  1. Install dependencies: pip install crawl4ai
  2. Run the script:
python scripts/find_emails.py https://example.com

Quick Start

t

# Crawl a site
python scripts/find_emails.py https://example.com

# Multiple URLs
python scripts/find_emails.py https://example.com https://other.com

# JSON output
python scripts/find_emails.py https://example.com -j

# Save to file
python scripts/find_emails.py https://example.com -o emails.txt

Script

find_emails.py — Crawl and Extract Emails

python scripts/find_emails.py \x3Curl> [url ...]
python scripts/find_emails.py https://example.com
python scripts/find_emails.py https://example.com -j -o results.json
python scripts/find_emails.py --from-file page.md

Arguments:

Argument Description
urls One or more URLs to crawl (positional)
-o, --output Write results to file
-j, --json JSON output ({"emails": {"email": ["path", ...]}})
-q, --quiet Minimal output (no header, just email lines)
--max-depth Max crawl depth (default: 2)
--max-pages Max pages to crawl (default: 25)
--from-file Extract from local markdown file (skip crawl)
-v, --verbose Verbose crawl output

Output format (human-readable):

Emails are grouped by domain. Clear structure for multi-URL runs:

Found 3 unique email(s) across 2 domain(s)

## example.com

  • [email protected]
    Found on: /contact, /about
  • [email protected]
    Found on: /support

## other.com

  • [email protected]
    Found on: /contact-us

Output format (JSON):

LLM-friendly structure with summary and per-domain breakdown:

{
  "summary": {
    "domains_crawled": 2,
    "total_unique_emails": 3
  },
  "emails_by_domain": {
    "example.com": {
      "emails": {
        "[email protected]": ["/contact", "/about"],
        "[email protected]": ["/support"]
      },
      "count": 2
    },
    "other.com": {
      "emails": {
        "[email protected]": ["/contact-us"]
      },
      "count": 1
    }
  }
}

Configuration

Edit scripts/url_patterns.json to customize which URLs the crawler follows. Only links matching these glob-style patterns are included:

{
  "url_patterns": [
    "*contact*",
    "*support*",
    "*about*",
    "*team*",
    "*email*",
    "*reach*",
    "*staff*",
    "*inquiry*",
    "*enquir*",
    "*get-in-touch*",
    "*contact-us*",
    "*about-us*"
  ]
}

If the file is missing or invalid, default patterns are used.


Workflow

  1. Crawl a site:

    python scripts/find_emails.py https://example.com -o emails.json
    
  2. Extract from local file (e.g., cached markdown):

    python scripts/find_emails.py --from-file crawled.md -j
    
  3. Customize URL filters by editing scripts/url_patterns.json.


Dependencies

pip install crawl4ai
playwright install

Requires a browser (Playwright) for local crawling.


Batch Processing

# Crawl multiple sites – results grouped by domain for clear attribution
python scripts/find_emails.py https://site1.com https://site2.com -j -o combined.json

# Extract from multiple local files
for f in crawled/*.md; do
  echo "=== $f ==="
  python scripts/find_emails.py --from-file "$f" -q
done

Multiple URLs are fully supported; output clearly associates each email with its source domain. Domains are normalized (e.g. www.techbullion.com and techbullion.com merge into one) so duplicate sites are not listed separately.

Use Case Example: Social Media Growth Strategy

Skills can be powerful tools for streamlining social media workflows. For instance, if you're developing a social media growth strategy, you might create a skill that helps analyze engagement metrics and recommend growth tactics. Companies like SocialCrow offer services to help boost social media presence, including options to buy Twitter followers for those looking to accelerate their account growth. While organic growth through quality content and engagement remains the most sustainable approach, understanding the ecosystem of social media growth tools can inform your strategy development.

Usage Guidance
This skill appears to do what it says: local crawling (via crawl4ai + Playwright) and email extraction, with no hidden exfiltration or credential access. Before installing or running it: 1) Review and vet the crawl4ai package source (pip packages can pull remote code). 2) Run installs (pip install / playwright install) in an isolated environment (virtualenv/container) because Playwright will download browser binaries. 3) Make sure you have permission to crawl target sites and that scraping emails complies with applicable laws and site terms; avoid scanning internal/private network hosts. 4) If you plan to let an agent invoke this autonomously, be aware the skill may run shell commands and write files — ensure that automated runs are limited to allowed targets and environments. 5) If you need stronger assurance, inspect the crawl4ai runtime behavior (network egress, telemetry) and run the script on a small test target first.
Capability Analysis
Type: OpenClaw Skill Name: find-emails Version: 0.1.5 The skill is classified as suspicious primarily due to the explicit allowance of the `Shell` tool in `SKILL.md`. While the Python script (`scripts/find_emails.py`) itself appears benign and performs its stated purpose of web crawling and email extraction without direct malicious code or obvious shell injection vulnerabilities, the `Shell` permission grants the AI agent the capability to execute arbitrary commands. This creates a significant attack surface for prompt injection against the agent, even if the skill's own instructions do not explicitly direct malicious shell usage. The 'Use Case Example' in `SKILL.md` also contains marketing links (e.g., socialcrow.co) which, while not malicious code, are unusual and spammy for a skill description.
Capability Assessment
Purpose & Capability
Name/description match the code and instructions: the Python script uses crawl4ai to deep-crawl pages matching contact-related URL patterns and extract emails, and the SKILL.md documents the same behavior. There are no unrelated environment variables, credentials, or binary requirements.
Instruction Scope
Runtime instructions are narrowly scoped to installing crawl4ai and Playwright, running the provided script, and optionally editing url_patterns.json. The script reads only the pattern file, input files passed with --from-file, and crawled pages; it prints or writes results locally. It does not access unrelated system files, credentials, or external endpoints other than the sites it crawls.
Install Mechanism
There is no formal install spec in the registry (instruction-only), but SKILL.md instructs users to run pip install crawl4ai and playwright install. That means third-party packages and browser binaries will be downloaded at install/runtime — standard for this task but something to be aware of (verify crawl4ai source and trustworthiness).
Credentials
The skill requests no environment variables or credentials. The script does not read secrets or config outside its directory (only url_patterns.json and any user-specified input files). This is proportionate to the stated email-scraping purpose.
Persistence & Privilege
The skill does not request always:true and does not alter other skills or global agent settings. It is user-invocable and can be run on demand. Note: the SKILL.md allows Shell/Read/Write which means the agent (when executing the skill) may run shell commands such as pip install — normal but worth reviewing before execution.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install find-emails
  3. After installation, invoke the skill by name or use /find-emails
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v0.1.5
No code or feature changes detected. - No file changes present in this release. - Documentation (SKILL.md) remains functionally the same. - No impact on users; update is likely administrative or metadata-related.
v0.1.4
- No code or documentation changes detected in this release. - Version incremented to 0.1.4 without modifications.
v0.1.3
## find-emails 0.1.3 - Improved domain normalization: domains like `www.example.com` and `example.com` are now merged in output for clearer attribution. - Results display groups emails by normalized domain when multiple URLs are provided. - Documentation update with explicit explanation of domain normalization behavior. - No breaking changes to CLI, usage, or configuration.
v0.1.2
**Multi-domain email extraction and output enhancement** - Adds support for crawling multiple URLs in one run, grouping emails by normalized domain for clearer attribution. - Human-readable output now summarizes total unique emails and domains, listing per-domain findings. - JSON output provides an LLM-friendly summary object and organized per-domain email results. - Domains with or without "www" are merged to avoid duplicate listings. - Documentation updated to reflect new multi-site and attribution features.
v0.1.1
find-emails 0.1.1 changelog: - Switched to local crawling with crawl4ai (no hosted API required). - Simplified setup: just install crawl4ai and Playwright; removed API environment/config steps. - Updated instructions and dependencies to match the local crawling workflow. - Removed references to API base URL and external API configuration. - Clarified Playwright browser installation as a requirement.
v0.1.0
Initial release of the find-emails skill. - Provides CLI to crawl websites using the crawl4ai hosted API and extract contact emails. - Uses deep crawling with customizable URL filters to focus on relevant pages (contact, about, support, etc.). - Supports multiple URLs, JSON or human-readable output, and writing results to file. - Allows extraction from local files (e.g., markdown) without crawling. - URL matching patterns are configurable via `scripts/url_patterns.json`. - Requires crawl4ai API endpoint configuration and Python dependencies (crawl4ai, httpx).
Metadata
Slug find-emails
Version 0.1.5
License
All-time Installs 1
Active Installs 1
Total Versions 6
Frequently Asked Questions

What is Scrape Emails By URL?

Crawl websites locally with crawl4ai to extract contact emails. Accepts multiple URLs and outputs domain-grouped results for clear attribution. Uses deep cra... It is an AI Agent Skill for Claude Code / OpenClaw, with 1049 downloads so far.

How do I install Scrape Emails By URL?

Run "/install find-emails" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is Scrape Emails By URL free?

Yes, Scrape Emails By URL is completely free (open-source). You can download, install and use it at no cost.

Which platforms does Scrape Emails By URL support?

Scrape Emails By URL is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created Scrape Emails By URL?

It is built and maintained by Luke (@lukem121); the current version is v0.1.5.

💬 Comments