# Web Page Metadata Extractor — Title, OG Tags, Author & More (`maged120/get-metadata`) Actor

Extract all metadata from any web page in one request — title, meta description, Open Graph tags, Twitter Card data, canonical URL, author, publish date, and more.

- **URL**: https://apify.com/maged120/get-metadata.md
- **Developed by:** [Maged](https://apify.com/maged120) (community)
- **Categories:** Automation, Integrations, SEO tools
- **Stats:** 12 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $9.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

### What does Web Page Metadata Extractor do?

**Web Page Metadata Extractor** retrieves all metadata from any URL in one request — title, meta description, Open Graph tags, Twitter Card data, canonical URL, author, publish date, favicon, and more — returned as clean structured JSON.

This Actor runs on the [Apify platform](https://apify.com). Use it for content audits, SEO analysis, link preview generation, social media card debugging, or building URL enrichment pipelines.

### Why use Web Page Metadata Extractor?

- **Complete metadata** — title, OG tags, Twitter Cards, canonical, hreflang, and structured data
- **Batch URLs** — enrich hundreds of URLs in one run
- **SEO audits** — quickly identify missing or misconfigured meta tags at scale
- **Link preview data** — get all the data needed to render rich link previews
- **LLM enrichment** — add URL context to AI pipelines without loading full page content

### How to use Web Page Metadata Extractor

1. Open the Actor and click **Try for free**
2. Enter URLs in the `urls` input field
3. Click **Start** — metadata appears in the Output tab
4. Download as JSON or CSV, or connect via the Apify API

### Input

```json
{
  "urls": [
    "https://apify.com",
    "https://example.com/blog/post-123",
    "https://github.com/apify/apify-sdk-python"
  ]
}
```

| Field | Type | Description | Default |
|---|---|---|---|
| `urls` | array | Web page URLs to extract metadata from | required |

### Output

Results are stored in the Apify dataset. Download in JSON, CSV, HTML, or Excel.

```json
{
  "url": "https://apify.com",
  "title": "Apify: Full-Stack Web Scraping and Data Extraction Platform",
  "description": "Build, deploy, share, and monitor web scrapers...",
  "canonical": "https://apify.com/",
  "author": "",
  "publishDate": "",
  "og": {
    "title": "Apify Platform",
    "description": "Build and deploy web scrapers in minutes",
    "image": "https://apify.com/img/og-image.png",
    "type": "website",
    "url": "https://apify.com"
  },
  "twitter": {
    "card": "summary_large_image",
    "site": "@apify",
    "title": "Apify Platform"
  },
  "favicon": "https://apify.com/favicon.ico",
  "language": "en",
  "robots": "index, follow"
}
```

### Output fields

| Field | Type | Description |
|---|---|---|
| `url` | string | Source URL |
| `title` | string | Page title tag |
| `description` | string | Meta description |
| `canonical` | string | Canonical URL |
| `author` | string | Author meta tag |
| `publishDate` | string | Publication date (when available) |
| `og.*` | object | Open Graph tag values |
| `twitter.*` | object | Twitter Card tag values |
| `favicon` | string | Favicon URL |
| `language` | string | Page language |
| `robots` | string | Robots meta directive |

### Cost

Pay-per-result pricing:

| Volume | Estimated cost |
|---|---|
| 100 URLs | ~$0.01–$0.10 |
| 1,000 URLs | ~$0.10–$1.00 |
| 10,000 URLs | ~$1–$10 |

### Tips

- Use for bulk SEO audits — check if all pages have proper titles, descriptions, and OG images
- Use `og.image` to pre-fetch thumbnail images for link previews in your app
- Filter results where `description` is empty to find pages missing meta descriptions

### FAQ

**Does this work on JavaScript-rendered pages?**
The Actor uses fast HTTP requests. For pages that require JS to render metadata, some tags may be missing.

**Can I use this to debug social media sharing previews?**
Yes — the `og.*` and `twitter.*` fields show exactly what social platforms use for link previews.

**Is this Actor maintained?**
Yes. Report bugs or feature requests in the Issues tab.

**Need help or have questions?**
Open an issue in the Issues tab or reach out on Discord: **maged03211**

# Actor input Schema

## `target_urls` (type: `array`):

Multiple URLs to scrape metadata from (more efficient than single URL)

## `use_selenium` (type: `boolean`):

Whether to use Selenium for JavaScript-heavy sites. If false, uses BeautifulSoup for faster scraping of static sites.

## `use_proxy` (type: `boolean`):

Whether to use a proxy for the request, experiment with both to get the best results for your case

## `proxy_type` (type: `string`):

Type of proxy to use (apify or custom)

## `custom_proxy_url` (type: `string`):

Custom proxy URL (e.g., http://username:password@proxy.example.com:8080)

## `limit` (type: `integer`):

Maximum number of metadata entries to return per URL (0 for unlimited)

## `filter` (type: `array`):

List of metadata types to include (e.g., \['title', 'description', 'og:title']). Leave empty to return all metadata.

## Actor input object example

```json
{
  "target_urls": [
    "https://apify.com/maged120/search-engines-scraper"
  ],
  "use_selenium": false,
  "use_proxy": false,
  "proxy_type": "apify",
  "limit": 0,
  "filter": []
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "target_urls": [
        "https://apify.com/maged120/search-engines-scraper"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("maged120/get-metadata").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "target_urls": ["https://apify.com/maged120/search-engines-scraper"] }

# Run the Actor and wait for it to finish
run = client.actor("maged120/get-metadata").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "target_urls": [
    "https://apify.com/maged120/search-engines-scraper"
  ]
}' |
apify call maged120/get-metadata --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=maged120/get-metadata",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/oqOLhqgAuOcFadRrW/builds/rG1gFFuSaaUIp0o2J/openapi.json
