# OpenGraph & Social Card Inspector — Meta Tag Extractor API (`logiover/social-card-preview-api`) Actor

Extract OpenGraph, Twitter Card and structured data meta tags from any URL at scale. See og:title, og:image, twitter:card, JSON-LD types, canonical URLs and favicons. Audit social media link previews for Facebook, Twitter/X, LinkedIn, Slack and WhatsApp.

- **URL**: https://apify.com/logiover/social-card-preview-api.md
- **Developed by:** [Logiover](https://apify.com/logiover) (community)
- **Categories:** Developer tools, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.50 / 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 a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## 🔍 OpenGraph & Social Card Inspector — Meta Tag API

Inspect how any URL appears when shared on **Facebook, Twitter/X, LinkedIn, Slack, Discord, WhatsApp** and every other platform that uses OpenGraph and Twitter Card meta tags. This actor extracts **all social media meta tags** from any list of URLs — `og:title`, `og:description`, `og:image`, `twitter:card`, `twitter:image`, JSON-LD structured data, canonical URLs, favicons, theme colors and more. Perfect for **SEO audits, social media debugging, competitive analysis, and link preview automation**.

### 🎯 Why Social Card Data Matters

When you share a link on social media, the platform reads `<meta>` tags to generate the preview card. If those tags are missing, broken, or poorly optimized, you lose clicks, engagement, and traffic. This actor lets you **audit social cards at scale** — paste 100 URLs and instantly see which ones have complete OpenGraph tags, which have broken images, and which are missing Twitter Card markup entirely.

**What you can extract per URL:**
- **OpenGraph**: `og:title`, `og:description`, `og:image`, `og:url`, `og:type`, `og:site_name`, `og:locale`
- **Twitter Cards**: `twitter:card`, `twitter:title`, `twitter:description`, `twitter:image`, `twitter:site`
- **Basic SEO**: HTML `<title>`, `<meta name="description">`, canonical URL, favicon
- **Structured Data**: JSON-LD `@type` values (Article, Product, Organization, etc.)
- **All meta tags**: Complete JSON dump of every extracted meta tag

### 📊 Output Fields

| Field | Description |
|-------|-------------|
| `url` | The inspected URL |
| `ogTitle` | OpenGraph title |
| `ogDescription` | OpenGraph description |
| `ogImage` | OpenGraph image URL |
| `ogUrl` | OpenGraph canonical URL |
| `ogType` | OpenGraph type (website, article, etc.) |
| `ogSiteName` | OpenGraph site name |
| `twitterCard` | Twitter card type (summary, summary_large_image) |
| `twitterTitle` | Twitter card title |
| `twitterDescription` | Twitter card description |
| `twitterImage` | Twitter card image URL |
| `title` | HTML `<title>` tag |
| `description` | HTML `<meta name="description">` |
| `canonicalUrl` | Canonical link URL |
| `favicon` | Favicon or apple-touch-icon URL |
| `jsonLdTypes` | Schema.org types found in JSON-LD |
| `themeColor` | Theme color meta tag |
| `allMetaTags` | Complete JSON of all extracted meta tags |

### ⚙️ Input Parameters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `startUrls` | array | — | List of URLs to inspect (required) |
| `includeOG` | boolean | true | Extract OpenGraph tags |
| `includeTwitter` | boolean | true | Extract Twitter Card tags |
| `includeStructured` | boolean | true | Extract JSON-LD and structured data |
| `includeBasic` | boolean | true | Extract standard SEO meta tags |
| `maxUrls` | integer | 100 | Max URLs per run (up to 1000) |

### 🎯 Use Cases

#### SEO Audits at Scale
SEO agencies paste 500 client URLs and get a spreadsheet showing exactly which pages have complete OpenGraph markup, which have broken `og:image` URLs, and which are missing Twitter Card tags entirely. Every missing or broken tag is a lost social traffic opportunity.

#### Social Media Debugging
Frontend developers and marketers debug why their links don't show rich previews on Slack, WhatsApp, or LinkedIn. Paste the URL, see all extracted tags in one view, and identify the missing or malformed tag.

#### Competitive Social Card Analysis
Growth marketers scrape competitors' blog posts and landing pages to analyze their social card strategy. What `og:title` patterns do they use? How large are their `og:image` dimensions? Which `twitter:card` type do they prefer?

#### Content Inventory & Migration
During website migrations, QA teams check that every page's social meta tags survived the transition. 1000 URLs → 1000 meta tag reports → zero broken social cards post-launch.

#### Automated Link Preview Generation
Build tools that accept a URL and return a rich preview card with title, description, and image — exactly what social platforms render when a link is shared.

### 💰 Pricing

Pay per event — charged per HTTP request. Each URL inspection costs a fraction of a compute unit. Auditing 100 URLs costs approximately $0.05–0.15. No monthly subscription. Pure usage-based pricing.

### 🚀 Performance Tips

- **Max concurrency of 10** — the actor can inspect 10 URLs simultaneously for maximum throughput
- **Datacenter proxies work fine** — most sites serve meta tags without bot detection
- **Use `includeOG: false` and `includeTwitter: false`** to only extract basic SEO tags (even faster)
- **The `allMetaTags` field** contains every single meta tag as a JSON string — useful for custom analysis
- **Combine with Screenshot Capture** to get both the visual social preview and the raw meta tags

### ❓ FAQ

**Q: Does this render JavaScript?**
A: No — this actor extracts meta tags from server-rendered HTML. For JavaScript SPAs that inject meta tags client-side, use the Screenshot Capture actor for visual previews.

**Q: Can it detect broken `og:image` URLs?**
A: The actor extracts the image URLs. You can then use the Bulk URL Status Checker to verify which image URLs return 200 vs 404.

**Q: What's the difference between `og:title` and `<title>`?**
A: `og:title` is what Facebook/LinkedIn display. `<title>` is what Google shows in SERPs. They're often different — and tracking both is valuable.

**Keywords:** opengraph checker, social card preview, meta tag extractor, og tags scraper, twitter card validator, facebook open graph api, social media meta tags, link preview debugger, og image checker, meta tag audit tool, social sharing analyzer, open graph inspector, seo meta tag extractor, social card api, structured data inspector

#### How do I bulk audit OpenGraph tags for a list of URLs?

Paste your URLs into startUrls and the inspector returns og:title, og:description, og:image, Twitter Card and JSON-LD tags per URL, so you can spot missing or broken tags in one spreadsheet.

#### How do I check why a link has no preview on Slack or LinkedIn?

Run the URL through the inspector and review the extracted OpenGraph and Twitter Card fields to pinpoint the missing or malformed tag that is blocking the rich preview.

### 📝 Changelog

#### 2026-07-01

- Maintenance pass: re-verified end-to-end on live data and confirmed successful runs within the 5-minute quality window on the default input.
- Sharpened Store metadata (SEO title & description) and expanded the FAQ with high-intent, long-tail questions for easier discovery in Google and Apify Store search.
- Added ready-to-run example tasks that cover common real-world use cases.

# Actor input Schema

## `startUrls` (type: `array`):

List of URLs to extract social media meta tags from. Each URL returns OpenGraph, Twitter Card, and structured data tags.
## `includeOG` (type: `boolean`):

Extract og:title, og:description, og:image, og:url, og:type, og:site_name, og:locale and more.
## `includeTwitter` (type: `boolean`):

Extract twitter:card, twitter:title, twitter:description, twitter:image, twitter:site and more.
## `includeStructured` (type: `boolean`):

Extract JSON-LD, Schema.org, article:*, and other structured metadata tags.
## `includeBasic` (type: `boolean`):

Extract standard meta tags: title, description, keywords, author, robots, viewport.
## `maxUrls` (type: `integer`):

Maximum total URLs to process in this run.
## `proxyConfiguration` (type: `object`):

Use proxies if target sites block datacenter IPs.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://apify.com"
    },
    {
      "url": "https://github.com"
    },
    {
      "url": "https://openai.com"
    }
  ],
  "includeOG": true,
  "includeTwitter": true,
  "includeStructured": true,
  "includeBasic": true,
  "maxUrls": 100,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
````

# Actor output Schema

## `url` (type: `string`):

The inspected URL

## `ogTitle` (type: `string`):

OpenGraph title

## `ogDescription` (type: `string`):

OpenGraph description

## `ogImage` (type: `string`):

OpenGraph image URL

## `ogUrl` (type: `string`):

OpenGraph canonical URL

## `ogType` (type: `string`):

OpenGraph type

## `ogSiteName` (type: `string`):

OpenGraph site name

## `twitterCard` (type: `string`):

Twitter card type

## `twitterTitle` (type: `string`):

Twitter card title

## `twitterDescription` (type: `string`):

Twitter card description

## `twitterImage` (type: `string`):

Twitter card image URL

## `title` (type: `string`):

HTML title tag

## `description` (type: `string`):

HTML meta description

## `canonicalUrl` (type: `string`):

Canonical link URL

## `jsonLdTypes` (type: `string`):

Schema.org types found

## `favicon` (type: `string`):

Favicon or apple-touch-icon URL

## `themeColor` (type: `string`):

Theme color meta tag

## `allMetaTags` (type: `string`):

JSON object of all extracted meta tags

## `scrapedAt` (type: `string`):

Timestamp

# 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 = {
    "startUrls": [
        {
            "url": "https://apify.com"
        },
        {
            "url": "https://github.com"
        },
        {
            "url": "https://openai.com"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("logiover/social-card-preview-api").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 = { "startUrls": [
        { "url": "https://apify.com" },
        { "url": "https://github.com" },
        { "url": "https://openai.com" },
    ] }

# Run the Actor and wait for it to finish
run = client.actor("logiover/social-card-preview-api").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 '{
  "startUrls": [
    {
      "url": "https://apify.com"
    },
    {
      "url": "https://github.com"
    },
    {
      "url": "https://openai.com"
    }
  ]
}' |
apify call logiover/social-card-preview-api --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=logiover/social-card-preview-api",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "OpenGraph & Social Card Inspector — Meta Tag Extractor API",
        "description": "Extract OpenGraph, Twitter Card and structured data meta tags from any URL at scale. See og:title, og:image, twitter:card, JSON-LD types, canonical URLs and favicons. Audit social media link previews for Facebook, Twitter/X, LinkedIn, Slack and WhatsApp.",
        "version": "1.0",
        "x-build-id": "L2IoeOYLkAa0woNbt"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/logiover~social-card-preview-api/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-logiover-social-card-preview-api",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/logiover~social-card-preview-api/runs": {
            "post": {
                "operationId": "runs-sync-logiover-social-card-preview-api",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/logiover~social-card-preview-api/run-sync": {
            "post": {
                "operationId": "run-sync-logiover-social-card-preview-api",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "startUrls"
                ],
                "properties": {
                    "startUrls": {
                        "title": "URLs to Inspect",
                        "type": "array",
                        "description": "List of URLs to extract social media meta tags from. Each URL returns OpenGraph, Twitter Card, and structured data tags.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "includeOG": {
                        "title": "Extract OpenGraph",
                        "type": "boolean",
                        "description": "Extract og:title, og:description, og:image, og:url, og:type, og:site_name, og:locale and more.",
                        "default": true
                    },
                    "includeTwitter": {
                        "title": "Extract Twitter Cards",
                        "type": "boolean",
                        "description": "Extract twitter:card, twitter:title, twitter:description, twitter:image, twitter:site and more.",
                        "default": true
                    },
                    "includeStructured": {
                        "title": "Extract Structured Data",
                        "type": "boolean",
                        "description": "Extract JSON-LD, Schema.org, article:*, and other structured metadata tags.",
                        "default": true
                    },
                    "includeBasic": {
                        "title": "Extract Basic Meta",
                        "type": "boolean",
                        "description": "Extract standard meta tags: title, description, keywords, author, robots, viewport.",
                        "default": true
                    },
                    "maxUrls": {
                        "title": "Max URLs",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Maximum total URLs to process in this run.",
                        "default": 100
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Use proxies if target sites block datacenter IPs.",
                        "default": {
                            "useApifyProxy": true
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
