webmetadata-extractor
Python client for the Web Metadata, OpenGraph & Contact Extractor API — turn any URL into structured web intelligence in a single fast call: SEO/OpenGraph metadata, public contact details, social profiles, tech-stack fingerprinting, Schema.org product data, a 14-point SEO audit, a graded security-headers audit, and AI/LLM-ready Markdown.
pip install webmetadata-extractor
# for the async client:
pip install "webmetadata-extractor[async]"
Quick start
Get a free API key on RapidAPI (1,000 requests/month, no credit card required).
from webmetadata_extractor import WebMetadataClient
client = WebMetadataClient(api_key="YOUR_RAPIDAPI_KEY")
data = client.extract("https://github.com")
print(data["title"], data["og_image"])
contacts = client.contacts("https://example.com")
print(contacts["emails"], contacts["social_links"])
audit = client.seo_audit("https://example.com")
print(audit["seo_score_percentage"], audit["warnings"])
Async
import asyncio
from webmetadata_extractor import AsyncWebMetadataClient
async def main():
async with AsyncWebMetadataClient(api_key="YOUR_RAPIDAPI_KEY") as client:
data = await client.extract("https://github.com")
print(data["title"])
asyncio.run(main())
Self-hosting
The backend is open source (MIT) and can be self-hosted. Point the client at your own deployment and skip the RapidAPI key:
client = WebMetadataClient(api_key=None, base_url="http://localhost:8000")
Methods
| Method | Endpoint | Returns |
|---|---|---|
extract(url, fields=None) |
GET /api/v1/extract |
Full payload — everything below in one call, or a subset via fields= |
link_preview(url) |
GET /api/v1/link-preview |
Title, description, OG image, favicon, site name |
contacts(url) |
GET /api/v1/contacts |
Public emails, phone numbers, social profile links |
tech_stack(url) |
GET /api/v1/tech-stack |
Framework/CMS detection, 40+ signatures, confidence scores |
schema(url) |
GET /api/v1/schema |
Schema.org JSON-LD: products, articles, events, organizations |
security(url, include_tls_details=False) |
GET /api/v1/security |
Graded security-headers audit + optional live TLS inspection |
markdown(url) |
GET /api/v1/markdown |
Clean, AI/LLM-ready Markdown of the page content |
seo_audit(url) |
GET /api/v1/seo-audit |
14-point SEO score, warnings, readability metrics |
links(url) |
GET /api/v1/links |
Internal vs. external hyperlinks (up to 100) |
batch(urls) |
POST /api/v1/batch |
Link-preview extraction over up to 10 URLs at once |
domain(url) |
GET /api/v1/domain |
DNS + WHOIS intelligence, no page fetch |
Every method raises WebMetadataAPIError (with .status_code and .body) on a non-2xx response.
Links
- Live interactive demo — paste a URL, no signup
- Full API documentation
- RapidAPI listing
License
MIT
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file webmetadata_extractor-0.1.0.tar.gz.
File metadata
- Download URL: webmetadata_extractor-0.1.0.tar.gz
- Upload date:
- Size: 6.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.14.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
83395f575044fe0d9b0a44516b38e36ba8849a635ea744b7fa54f6862b8499f5
|
|
| MD5 |
f5832a1e42f1cbd3f2a653fbf7a9cbab
|
|
| BLAKE2b-256 |
5e0ea3a43429648d2f8c2c35e286c29cabbebf065542f9c6d9ec4a9c4ee610e8
|
File details
Details for the file webmetadata_extractor-0.1.0-py3-none-any.whl.
File metadata
- Download URL: webmetadata_extractor-0.1.0-py3-none-any.whl
- Upload date:
- Size: 7.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.14.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c402cf19c0e6e76ebef51713f44c44bdf293ee586b7c9378c678b3cf541a09d9
|
|
| MD5 |
ad6eb18f43253c712727d165f2f6ce7f
|
|
| BLAKE2b-256 |
1ed9242f8af318755d3e450c44d16cecbfc4bdb866495d8bb566b7054133ba0a
|