# Media Monitoring API - Mentions, Sentiment, Reach, Determ (`nabeelbaghoor/media-monitoring-mentions-api`) Actor

Export media monitoring mentions from your own Determ (Mediatoolkit) account: web, news, social, forums, print, TV and radio, with sentiment, reach, virality, interactions and influence score, plus mention counts by source type and your groups and keywords. Read only. Bring your own token.

- **URL**: https://apify.com/nabeelbaghoor/media-monitoring-mentions-api.md
- **Developed by:** [Nabeel Hassan](https://apify.com/nabeelbaghoor) (community)
- **Categories:** Social media, Marketing, News
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $10.00 / 1,000 mention returneds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Media Monitoring API - Mentions, Sentiment, Reach, Determ

Export the mentions your Determ (formerly Mediatoolkit) keywords collect across web, news, social media, forums, print, TV and radio into a dataset, a spreadsheet or a warehouse, with sentiment, reach, virality, interactions and influence score on every row. Uses your own Determ API token, never changes anything in your account, and charges only for rows that carry data.

### What it collects

- **Mentions** of any keyword (monitoring query) or whole group you can open: mention ID, source type (web, Facebook, X (Twitter), forums, comments, YouTube, Instagram, Reddit, TikTok, print, radio, TV, Bluesky), title, text snippet, URL, author, influencer, estimated reach, virality score, total interactions, influence score, automatic sentiment, detected languages and locations, matched keywords, image URL and the time it was ingested.
- **Documented filters**: a preset time range (today, yesterday, last 24 hours, last 7, 30 or 90 days, this or last week, this or last month) or a custom start and end, on the published time or the time the mention entered your feed, plus source types and sentiments to include or exclude.
- **Sorting** by published time, feed time, reach, virality, interactions, influence or engagement, ascending or descending.
- **Mention counts**: the total mentions of a keyword or group for the same time range and filters, broken down per source type with each type's share.
- **Organizations, groups, keywords and tags**: every organization the token reaches, its time zone, state and monthly mention allowance, each group with its keywords, each keyword with its groups, active flag and dates, and the tags, ready to use as IDs in the other modes.
- **Account**: the user behind the token and their organization roles, never the token itself.
- Read only, pay per result, bring your own token.

### Input

| Field | What it does |
| --- | --- |
| What to read | Organizations (default, needs nothing else), mentions, mention counts or account. |
| Organization ID | Optional. Picked automatically when the token reaches one organization. |
| Keyword ID or Group ID | Mentions and mention counts read one keyword, or one group with all its keywords. |
| Time range, Time range applies to | A preset period or Custom, on the published time or the feed time. |
| Date start, Date end | Custom range, as `YYYY-MM-DD` or ISO 8601. The end is exclusive; a plain date includes that day. |
| Source types, Exclude source types | Any of the 13 documented source types. |
| Sentiments, Exclude sentiments | Positive, neutral, negative, undefined. |
| Sort mentions by, Sort direction | Mentions mode. |
| Maximum results | Row cap for the run. |
| Requests per minute | Pacing, up to the provider's 100 mention calls a minute. |
| API token | Your Determ API token, as a secret input, or the `DATA_API_KEY` secret. |

Run the organizations mode first to get keyword and group IDs, then mentions or mention counts with one of them.

### Access and limits on the Determ side

- API access is part of selected Determ plans. Each user on such a plan has a static API token under Settings > Account Settings in the Determ app; if the field is not there, the plan does not include the API.
- Mentions are read up to 1,000 per page and paged with a scroll token, so long exports keep going until the time range is exhausted or your maximum is reached.
- The provider allows 100 mention scroll or count calls a minute per user, shared between the keyword and group routes. The actor paces itself and waits the time the provider asks for when it is rate limited.

### FAQ

#### What is a media monitoring API used for?

Getting the mentions a monitoring platform collects out of its dashboard and into your own tools. A PR team pulls every negative mention of the brand from the last day with reach and URL into a response queue. An analyst exports a quarter of print, TV and radio mentions for a coverage report. A data team loads daily mentions per source type into a BI dashboard to track share of voice against competitor keywords.

#### Which data source does this actor read?

The Determ API at api.mediatoolkit.com, the public API of Determ (formerly Mediatoolkit), documented at developers.determ.com. It calls the user, organization, mention scroll and mention count routes. The documentation and the live host were checked on 2026-10-04.

#### Do I need a Determ account?

Yes. This actor is bring-your-own-token and never ships one. Your Determ plan must include API access; copy the API token from Settings > Account Settings. A missing or refused token ends the run cleanly with a message saying which it was.

#### How do I export new mentions incrementally?

Use the mentions mode with "Time range applies to" set to the feed time, sort by feed time ascending, and set the date start to the time of your previous run. Mentions that arrive late in your feed are then never missed.

#### Can I get mention volume per channel?

Yes. The mention counts mode returns the total mentions of a keyword or group for the chosen time range and filters, plus one row per source type (web, print, TV, radio, each social network) with its count and share of the total.

#### Can this actor change anything in my Determ account?

No. It reads only. The scroll and count calls are POST requests because Determ takes the query as a JSON body, but they change nothing. The keyword create and delete routes, which would add a query or permanently remove one and its mentions, are not used. The token is never logged and is stripped from any error text.

#### How is it priced?

Pay per result: one price per mention, a lower price per count row, and the lowest per organization, group, keyword, tag or account row. Requests that find nothing are free. Your Determ subscription applies separately.

### Example output

```json
{
  "mode": "mentions",
  "modeLabel": "Mentions",
  "recordType": "mention",
  "organizationId": "100",
  "keywordId": "5001",
  "groupId": null,
  "found": true,
  "id": 987654321,
  "name": "TechNews",
  "date": "2024-01-15T10:00:00.000Z",
  "sourceType": "WEB",
  "sentiment": "POSITIVE",
  "author": "TechNews",
  "title": "Example Brand announces new factory",
  "snippet": "Example Brand has announced plans to build a new factory...",
  "url": "https://example.com/article/new-factory",
  "reach": 50000,
  "interactions": 1200,
  "influenceScore": 78,
  "virality": 0.85,
  "type": "WEB",
  "mention": "Example Brand has announced plans to build a new factory...",
  "interaction": 1200,
  "autoSentiment": "POSITIVE",
  "languages": ["en"],
  "locations": ["US"],
  "keywords": ["Example Brand"],
  "insertTime": 1705312800000,
  "insertedAt": "2024-01-15T10:00:00.000Z",
  "language": "en",
  "location": "US",
  "value": null,
  "totalCount": null,
  "retrievedAt": "2026-10-04T09:14:52.118Z",
  "note": null
}
```

Values are illustrative; every field is one the provider documents. Count rows carry `sourceType`, `value` (the count), `totalCount` and `share`; keyword rows carry `groupIds`, `groupNames`, `active` and `editedAt`.

### Keyword map

media monitoring API, media mentions API, news monitoring API, social media monitoring API, broadcast monitoring, print TV radio monitoring, brand mentions export, sentiment analysis data, reach and virality, share of voice, PR monitoring data, Determ API, Mediatoolkit API, Determ mentions export.

# Actor input Schema

## `mode` (type: `string`):

Organizations lists every organization your token reaches with its groups, keywords and tags, and needs nothing else, so it is the default: it gives the IDs the other modes use. Mentions pages through the mentions of one keyword or one group. Mention counts returns the total and the count per source type for one keyword or group. Account shows the user behind the token.

## `organizationId` (type: `string`):

The numeric Determ organization ID, as the organizations or account mode lists it. Optional: when the token reaches only one organization it is used automatically. In the organizations mode it limits the listing to that one.

## `keywordId` (type: `string`):

Mentions and mention counts. The numeric ID of one keyword (monitoring query), as the organizations mode lists it. Set this or a group ID, not both.

## `groupId` (type: `string`):

Mentions and mention counts. The numeric ID of one group, which reads all of its keywords together. Set this or a keyword ID, not both.

## `timeRange` (type: `string`):

Mentions and mention counts. A preset period, resolved in the organization time zone, or Custom to use the date start and end below. Setting a date start or end always uses the custom range.

## `timeField` (type: `string`):

Mentions and mention counts. Filter on when the mention was published, or on when it entered your feed (use this for incremental exports).

## `dateFrom` (type: `string`):

Custom range start, inclusive, as YYYY-MM-DD or an ISO 8601 date-time such as 2026-09-01T00:00:00Z.

## `dateTo` (type: `string`):

Custom range end, exclusive, as an ISO 8601 date-time. A plain YYYY-MM-DD date includes that whole day.

## `sourceTypes` (type: `array`):

Mentions and mention counts. Keep only mentions from these source types. Leave empty for all.

## `excludeSourceTypes` (type: `array`):

Mentions and mention counts. Leave out mentions from these source types.

## `sentiments` (type: `array`):

Mentions and mention counts. Keep only mentions with these sentiments. Leave empty for all.

## `excludeSentiments` (type: `array`):

Mentions and mention counts. Leave out mentions with these sentiments.

## `sortBy` (type: `string`):

Mentions. The documented sort fields.

## `sortDirection` (type: `string`):

Mentions. Descending (newest or highest first) or ascending.

## `maxResults` (type: `integer`):

The most rows this run returns and charges for. Mentions are read up to 1,000 a page with a scroll token, so large exports are supported.

## `requestsPerMinute` (type: `integer`):

Pacing. The provider allows 100 mention scroll or count calls a minute per user, shared by the keyword and group routes.

## `apiKey` (type: `string`):

Your own Determ API token, from Settings > Account Settings in the Determ app (shown on plans that include API access). Stored as a secret. You can instead set the DATA_API_KEY environment secret.

## Actor input object example

```json
{
  "mode": "organizations",
  "timeRange": "LAST_30_DAYS",
  "timeField": "published",
  "sortBy": "PUBLISHED_TIME",
  "sortDirection": "DESC",
  "maxResults": 100,
  "requestsPerMinute": 60
}
```

# Actor output Schema

## `records` (type: `string`):

One row per mention, mention count, organization, group, keyword, tag or account.

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("nabeelbaghoor/media-monitoring-mentions-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 = {}

# Run the Actor and wait for it to finish
run = client.actor("nabeelbaghoor/media-monitoring-mentions-api").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{}' |
apify call nabeelbaghoor/media-monitoring-mentions-api --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,nabeelbaghoor/media-monitoring-mentions-api"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/rL2txod1wUwLLZX2a/builds/O1arE6gw07vS4TTIM/openapi.json
