---
title: "Export mentions as CSV"
method: GET
path: "/v1/mentions/export.csv"
tags: ["Mentions"]
---

# Export mentions as CSV

`GET /v1/mentions/export.csv`

## Request

- Base URL: `https://api.mentio.dev`
- URL: `https://api.mentio.dev/v1/mentions/export.csv`
- Auth: HTTP bearer

The same mentions GET /v1/mentions would list for these filters, as CSV, newest matched first (the order they entered your feed, which can differ from the post date): id, published_at, platform, keyword, author, author_url, author_followers, relevance, sentiment, intents (pipe-separated), language, confidence, status, relevant, delivered, url, links (pipe-separated), text (first 1,000 characters), group, group_external_id, rating and app_id (app store reviews only), title and image_url (where the platform has them), duplicate_of (the mention a cross-post copies; the CSV keeps one row per mention, copies included, so it adds up to the bill), kind (post, comment or repository), parent_url (the post a comment answers), comments (comments of it delivered to you), subreddit and flair (Reddit only), country (where the author is, ISO 3166-1 alpha-2, empty when unknown) and organization (true when a company or organization posted). Capped at 10,000 rows; the X-Mentions-Truncated header says when the cap cut the list. At most 6 exports per minute per workspace; a 429 carries Retry-After.

## Query parameters

- `keywordId` string: Only matches of this keyword.
- `platform` 'bluesky' | 'hackernews' | 'github' | 'stackoverflow' | 'devto' | 'reddit' | 'x' | 'youtube' | 'news' | 'linkedin' | 'tiktok' | 'instagram' | 'appstore' | 'googleplay' | 'trustpilot' | 'googlemaps' | 'rss': Only posts from this platform.
- `status` 'open' | 'ignored' | 'done': Only mentions in this status. Omit for every status.
- `relevant` boolean: true: only mentions the classifier scored relevant; false: only the rest (unclassified included).
- `sentiment` 'positive' | 'neutral' | 'negative': Only this sentiment.
- `intent` string: Only mentions carrying this intent or topic tag (buy_intent, question, complaint, praise, comparison, churn_intent, bug_report, pricing, hiring, event, promotional, testimonial, industry_insight, launch, feedback).
- `automated` boolean: true: only mentions that read as machine-made (a bot account, a scheduled or templated post, AI-written text); false: only the rest, mentions judged before this existed included. Omitted: everything.
- `organization` boolean: true: only posts by companies, brands and organizations (a LinkedIn company page, a GitHub organization, a business account); false: only posts by people, mentions judged before this existed included. Omitted: everything.
- `personId` string: Only this person (an id from /v1/people), merged accounts included. Implies includeMuted.
- `includeMuted` boolean: true: include mentions by people you muted, hidden by default: muted for the workspace, or for the mention's own keyword group.
- `includeDuplicates` boolean: true: list cross-posts (a mention whose duplicateOf is set) as mentions of their own. By default each is listed only in its original's duplicates.
- `assigneeId` string: Only mentions assigned to this workspace member (user id).
- `snoozed` boolean: true: only mentions currently snoozed. Otherwise snoozed mentions stay out until they wake.
- `excludeAuthors` string[], nullable: Hide these authors: display names, handles or profile URLs. Repeatable, or one comma-separated value.
- `minRelevance` integer, nullable: Only mentions scored at least this; unclassified ones are excluded.
- `minConfidence` number, nullable: Only mentions whose classifier confidence is at least this, 0 to 1. Mentions without a confidence are excluded.
- `minFollowers` integer, nullable: Only authors with at least this many followers. Unknown reach never passes.
- `maxFollowers` integer, nullable: Only authors with at most this many followers. Unknown reach never passes.
- `kind` 'post' | 'comment' | 'repository': Only posts (post), only comments (comment) or only GitHub repository events (repository). Omitted: all.
- `isReply` boolean: true: only replies and comments (posts answering another post); false: only top-level posts. Omitted: both.
- `alertId` string: Apply an alert rule's filter (an id from GET /v1/alerts) on top of the other filters: the same mentions the rule would send, for a feed-shaped export or a preview. Unknown ids are a 404.
- `viewId` string: Apply a saved view's filter (an id from GET /v1/views) on top of the other filters, every condition ANDed: exactly what the view selects. Unknown ids are a 404.
- `keywordKinds` string[]: Only matches of keywords of any of these kinds: brand, competitor, topic. Repeatable, or comma-separated.
- `tags` string[], nullable: Only authors tagged with any of these (exact, case-sensitive), in the workspace's tags or those of the mention's own keyword group. Repeatable, or comma-separated.
- `linkHosts` string[], nullable: Only posts linking to any of these hosts, the host itself or a subdomain of it (octolens.com also matches blog.octolens.com). Repeatable, or comma-separated.
- `platforms` string[]: Only posts from any of these platforms.
- `notPlatforms` string[]: Never posts from these platforms.
- `keywordIds` string[], nullable: Only matches of any of these keywords.
- `groupIds` string[], nullable: Only matches of keywords in any of these groups (grp_...). Repeatable, or comma-separated.
- `notGroupIds` string[], nullable: Never matches of keywords in these groups.
- `notKeywordIds` string[], nullable: Never matches of these keywords.
- `sentiments` string[]: Only these sentiments.
- `notSentiments` string[]: Never these sentiments. A mention the classifier has not scored yet still passes.
- `intents` string[], nullable: Only mentions carrying any of these intent or topic tags.
- `notIntents` string[], nullable: Never mentions carrying these intent or topic tags.
- `notLinkHosts` string[], nullable: Never posts linking to these hosts, the host itself or a subdomain of it.
- `subreddits` string[], nullable: Only Reddit posts from any of these subreddits: subreddits=SaaS,startups (names without the r/, any case). Every other post fails it. Repeatable, or comma-separated.
- `notSubreddits` string[], nullable: Never Reddit posts from these subreddits; posts from other platforms still pass.
- `notTags` string[], nullable: Never authors tagged with any of these, in the workspace's tags or those of the mention's own keyword group.
- `languages` string[]: Only posts in any of these languages (ISO 639-1: en, es, de). A post whose language is unknown never passes.
- `notLanguages` string[]: Never posts in these languages. A post whose language is unknown still passes.
- `countries` string[]: Only posts whose author is in any of these countries (ISO 3166-1 alpha-2: us, in, de), as the classifier read the author's profile and the post. A post whose country is unknown never passes.
- `notCountries` string[]: Never posts whose author is in these countries: notCountries=in. A post whose country is unknown still passes.
- `ratings` integer[]: Only app store reviews with any of these star ratings (1 to 5): ratings=1,2 is the unhappy ones. Every other post fails it.
- `notRatings` integer[]: Never reviews with these star ratings (1 to 5): notRatings=5 hides the five star reviews. Posts that are not reviews still pass.
- `minLikes` integer, nullable: Only posts with at least this many likes (upvotes, reactions), as the platform reported them when the post was found. A post without that count never passes.
- `minReposts` integer, nullable: Only posts with at least this many reposts (shares, retweets), as the platform reported them when the post was found. A post without that count never passes.
- `minReplies` integer, nullable: Only posts with at least this many replies (comments), as the platform reported them when the post was found. A post without that count never passes.
- `minQuotes` integer, nullable: Only posts with at least this many quotes, as the platform reported them when the post was found. A post without that count never passes.
- `minViews` integer, nullable: Only posts with at least this many views (plays), as the platform reported them when the post was found. A post without that count never passes.
- `minBookmarks` integer, nullable: Only posts with at least this many bookmarks (saves), as the platform reported them when the post was found. A post without that count never passes.
- `anyOf` string: OR across groups of conditions, as URL-encoded JSON: [{"platforms":["reddit"],"sentiments":["negative"]},{"intents":["buy_intent"]}] is "negative on Reddit, or buying intent anywhere". Each group holds the conditions of a view filter (lists any-of, not lists none-of, all ANDed); a mention passes when at least one group holds, and every other filter here still applies. 1 to 10 groups, none empty, no nesting.
- `q` string: Substring search in the post text or the author's name.
- `since` string, date-time: Only posts published at or after this instant (ISO 8601, or epoch ms).
- `until` string, date-time: Only posts published at or before this instant (ISO 8601, or epoch ms).

## Response `200`

CSV, UTF-8

## Other responses

- `400`: Invalid query, or filter_too_complex: the filters together name more values than one query can carry
- `401`: Missing or invalid API key
- `429`: More than 6 exports this minute; retry after the Retry-After seconds

---

[API](https://skmtc.dev/mentio/apis/mentio-api.md) · [All operations](https://skmtc.dev/mentio/apis/mentio-api/llms.txt) · [OpenAPI document](https://skmtc.dev/mentio/apis/mentio-api/revisions/b16a21d0ed02?raw)
