Skip to main content
POST
/
api
/
v1
/
analytics
/
social
/
youtube
/
videos
List YouTube videos cited in scope
curl --request POST \
  --url https://api.mentionlab.io/api/v1/analytics/social/youtube/videos \
  --header 'Content-Type: application/json' \
  --header 'x-project-id: <x-project-id>' \
  --data '
{
  "startDate": "2025-01-01",
  "endDate": "2025-02-01",
  "countries": [
    "BE",
    "FR"
  ],
  "languages": [
    "en",
    "fr"
  ],
  "models": [
    "gpt-4o",
    "claude-3-5-sonnet"
  ],
  "queryIds": [
    "3fa85f64-5717-4562-b3fc-2c963f66afa6"
  ],
  "queryTagIds": [
    "3fa85f64-5717-4562-b3fc-2c963f66afa6"
  ],
  "execTagIds": [
    "3fa85f64-5717-4562-b3fc-2c963f66afa6"
  ],
  "queryTagMode": "or",
  "execTagMode": "or",
  "timezone": "Europe/Brussels",
  "page": 1,
  "pageSize": 50,
  "channelId": "UCsXVk37bltHxD1rDPwtNM8Q",
  "channelCountry": "US",
  "search": "product review",
  "sort": [
    {
      "field": "viewCount",
      "direction": "DESC"
    }
  ]
}
'
{
  "globalYoutubeCitations": 733,
  "totalResponses": 2140,
  "results": [
    {
      "videoId": "_wbc-UEur4c",
      "url": "https://www.youtube.com/watch?v=_wbc-UEur4c",
      "title": "The Egg - A Short Story",
      "thumbnailUrl": "https://i.ytimg.com/vi/_wbc-UEur4c/mqdefault.jpg",
      "publishedAt": "2019-10-04T14:00:00.000Z",
      "durationSeconds": 933,
      "isShort": false,
      "viewCount": "42385123",
      "likeCount": "1254321",
      "commentCount": "48291",
      "favoriteCount": "0",
      "channelId": "UCsXVk37bltHxD1rDPwtNM8Q",
      "channelName": "Kurzgesagt – In a Nutshell",
      "citationCount": 42,
      "citationShare": 5.73,
      "citationRate": 1.96,
      "uniqueQueryCount": 7,
      "firstCitedAt": "2026-04-01T09:12:34.000Z",
      "lastCitedAt": "2026-04-24T18:45:12.000Z",
      "lastSnapshotId": "01924f6a-7b90-7c11-9b8a-123456789abc"
    }
  ],
  "page": {
    "totalRecords": 123,
    "limit": 123,
    "currentPage": 123,
    "totalPages": 123,
    "nextPage": 123,
    "prevPage": 123
  }
}

Headers

x-project-id
string
required

Project ID to specify the project context

Body

application/json
startDate
string

Start date (inclusive)

Example:

"2025-01-01"

endDate
string

End date (exclusive)

Example:

"2025-02-01"

countries
string[]

Filter by country codes

Example:
["BE", "FR"]
languages
string[]

Filter by language codes

Example:
["en", "fr"]
models
string[]

Filter by AI models

Example:
["gpt-4o", "claude-3-5-sonnet"]
queryIds
string[]

Filter by query IDs

Example:
["3fa85f64-5717-4562-b3fc-2c963f66afa6"]
hasSources
enum<string>

Filter by source presence: "sources" (only with sources), "no_sources" (only without), "all" (no filter). Legacy true/false values are still accepted.

Available options:
all,
sources,
no_sources
hasShopping
enum<string>

Filter by shopping presence: "shopping" (only with shopping), "no_shopping" (only without), "all" (no filter). Legacy true/false values are still accepted.

Available options:
all,
shopping,
no_shopping
queryTagIds
string[]

Filter by query tag IDs

Example:
["3fa85f64-5717-4562-b3fc-2c963f66afa6"]
execTagIds
string[]

Filter by execution tag IDs

Example:
["3fa85f64-5717-4562-b3fc-2c963f66afa6"]
queryTagMode
enum<string>
default:or

Query tag matching mode: "or" matches ANY tag (default), "and" matches ALL tags.

Available options:
and,
or
execTagMode
enum<string>
default:or

Execution tag matching mode: "or" matches ANY tag (default), "and" matches ALL tags.

Available options:
and,
or
timezone
string
default:UTC

IANA timezone for date bucketing and filtering (e.g. "Europe/Brussels"). Defaults to UTC.

Example:

"Europe/Brussels"

page
number
default:1

Page number (1-based).

Example:

1

pageSize
number
default:50

Items per page (max 200).

Example:

50

channelId
string

Drill-down filter: restrict results to videos from a specific YouTube channel. Uses the YouTube-side channel ID, not our internal UUID.

Example:

"UCsXVk37bltHxD1rDPwtNM8Q"

channelCountry
string

Drill-down filter: restrict results to videos whose channel's home country (latest snapshot) matches this ISO code. Powers the per-country sheet. Distinct from the country scope filter, which is the query/market country.

Example:

"US"

Case-insensitive substring filter on the latest video title. SQL wildcards ('%', '_') and backslashes are escaped and treated literally.

Example:

"product review"

sort
object[]

Ordering directives applied to the result set. Each entry pairs a sortable field with a direction. Allowed fields: title, publishedAt, durationSeconds, isShort, viewCount, likeCount, commentCount, channelName, citationCount, citationShare, citationRate, uniqueQueryCount, firstCitedAt, lastCitedAt.

Example:
[
{ "field": "viewCount", "direction": "DESC" }
]

Response

globalYoutubeCitations
number
required

Total distinct AI responses in scope that cited any YouTube video. Denominator for citationShare.

Example:

733

totalResponses
number
required

Total number of AI responses in the filtered scope. Used as the denominator for citationRate.

Example:

2140

results
object[]
required

Per-video rows for the current page.

page
object
required

Pagination metadata.