Website Metadata Scraper: Meta Tags & Open Graph Extractor
Pricing
from $2.50 / 1,000 page analyzeds
Website Metadata Scraper: Meta Tags & Open Graph Extractor
Extract title, meta description, Open Graph tags, language, canonical URL and link and image counts from a list of web pages. One clean row per URL.
Pricing
from $2.50 / 1,000 page analyzeds
Rating
0.0
(0)
Developer
Vícente Matallana
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Web Page Metadata Extractor
Get the title, meta description, Open Graph tags, language, canonical URL and link and image counts of a list of web pages: one clean row per URL. Use it for SEO audits, link preview checks, content inventories or as a fast tool for AI agents that need to know what a page is about without reading all of it.
What it does
- Takes a list of page URLs.
- Loads each page with a plain HTTP request (no browser, no login, no cookies) and follows redirects.
- Returns one row per URL, in the same order as the input, with the input
urland:title,descriptionandlanguagedeclared by the page;canonicalUrl, always as an absolute URL;openGraphtags used for link previews in social networks and chat apps (title,description,image,type,siteName);internalLinksandexternalLinks: unique links to the same site (ignoringwww.) and to other sites;images: number of<img>tags;finalUrlafter redirects and the HTTPstatusCode.
- A page that fails (HTTP error, timeout, not an HTML page) gets a row with an
errormessage and the run continues with the other URLs. - It does not collect personal data: no authors, emails or phone numbers.
Pages that build their content with JavaScript after loading may return fewer tags than a browser shows. Most sites put these tags in the initial HTML, because search engines and link previews need them there.
Input example
{"urls": ["https://www.python.org/","https://docs.python.org/3/","https://example.com/"],"maxConcurrency": 5}
| Field | Required | Description |
|---|---|---|
urls | Yes | Absolute http(s) URLs of the pages to analyze |
maxConcurrency | No | Pages loaded in parallel, 1–20. Default 5 |
Output example
{"url": "https://docs.python.org/3/","finalUrl": "https://docs.python.org/3/","statusCode": 200,"title": "3.14.8 Documentation","description": "The official Python documentation.","language": "en","canonicalUrl": "https://docs.python.org/3/index.html","openGraph": {"title": "Python 3.14 documentation","description": "The official Python documentation.","image": "https://docs.python.org/3/_static/og-image.png","type": "website","siteName": "Python documentation"},"internalLinks": 45,"externalLinks": 13,"images": 3,"error": null}
A failed URL looks like this:
{"url": "https://www.python.org/missing","finalUrl": "https://www.python.org/missing","statusCode": 404,"title": null,"description": null,"language": null,"canonicalUrl": null,"openGraph": null,"internalLinks": null,"externalLinks": null,"images": null,"error": "The page answered with HTTP 404"}
Any field the page does not declare is null. Export the dataset as JSON, CSV, Excel or HTML, or read the Overview and Open Graph views in the Console.
Pricing
This Actor uses pay-per-event pricing. You pay only for pages analyzed successfully, and platform usage is included in the price. See the Pricing tab for the current price per event.
| Event | When it is charged |
|---|---|
page-analyzed | Once per URL that returns a row without error |
URLs that fail are not charged. If you set a maximum charge for the run, the Actor stops cleanly when it is reached and keeps every row produced so far.
Free plan limits
Users on the Apify Free plan can analyze up to 100 URLs per run. The Actor analyzes the first 100, saves them and finishes with a clear message. Paid plans have no per-run limit.
Use cases
- SEO audits: find pages with a missing title, description or canonical URL.
- Link previews: check that every page has an Open Graph title, description and image before a campaign.
- Content inventories: list the title and language of every URL in a sitemap or a spreadsheet.
- AI agents: give an agent a quick, cheap summary of what a list of pages is about before deciding which ones to read in full.
- Monitoring: schedule a weekly run to catch broken pages (4xx and 5xx) and changed titles.
Comparison with alternatives
| Option | Good for | Trade-off |
|---|---|---|
| This Actor | Hundreds of URLs at once, from the Console, the API, a schedule or an AI agent, with a typed dataset | Reads the initial HTML only; no JavaScript rendering |
| Social network link preview debuggers | Checking how one URL looks in one network | One URL at a time, no export |
| Browser-based SEO crawlers | Full site crawls with rendering and dozens of checks | Heavier, slower and priced for full audits |
| Your own script | Full control | You host, run and maintain it, including retries and error handling |
You are responsible for having the right to access the pages you analyze. The Actor stores nothing outside the run's dataset.