# Globo Esporte Scraper - Sports News, Videos & Matches (`abotapi/globo-ge`) Actor

Scrape public sports content from ge.globo.com, including news, videos, matches and feed records. Extract clean, structured data for sports coverage, content monitoring, match tracking and analysis.

- **URL**: https://apify.com/abotapi/globo-ge.md
- **Developed by:** [Abot API](https://apify.com/abotapi) (community)
- **Features:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 1,000 ge sports records

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/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

## Globo GE Sports Scraper

Globo GE Sports Scraper collects public sports content from GE (ge.globo.com), including news, videos, matches, standings, and top scorers. Search by keyword, or paste content links -- full URLs and bare section paths both work. Results share one dataset with a record type so you can separate news from match and table records.

### Why This Scraper?

- **Search by keyword.** Search public GE content by one or more keywords.
- **Sections and teams.** Collect the homepage, sport sections, competitions and team pages.
- **Direct links.** Read article, match, video, and public search URLs.
- **Rich records.** Source IDs, titles, summaries, sections, dates, images, and match metadata are kept.
- **One dataset.** Articles, videos, matches, standings, and top scorers share a stable `recordType`.
- **Recurring runs.** Track NEW, UPDATED, UNCHANGED, REAPPEARED, and EXPIRED records.

### Use Cases

- **Sports news monitoring:** media and social teams search by team, player, or competition and get only new or updated articles and videos on a schedule with incremental mode.
- **Scoreboards and fan apps:** pull match results and league standings tables from a competition's GE section to power a scoreboard, bot, or fan site.
- **Content research and archiving:** collect full article text and video metadata about a team or topic to build a searchable archive or editorial brief.
- **Editorial and link audits:** read one specific article, match, or video page directly by URL to check its byline, publish date, and full text.
- **Historical results tracking:** collect standings and match records across a season to build a dataset of positions, points, and results over time.

### Data You Get

> Sample shape: values are illustrative placeholders, not from a live record.

| Field | Example |
| --- | --- |
| `id` | `"sample0match0001"` |
| `recordType` | `"match"` |
| `title` | `"Sample Home x Sample Away"` |
| `summary` | `"Match card from the public GE feed"` |
| `section` | `"sample-championship"` |
| `url` | `"https://ge.globo.com/futebol/..."` |
| `imageUrl` | `"https://.../image.jpg"` |
| `thumbnailUrl` | `"https://.../thumb.jpg"` |
| `publishedAt` | `"2026-01-01T18:00:00Z"` |
| `modifiedAt` | `"2026-01-01T18:05:00Z"` |
| `fullText` | `"Public article text..."` |
| `author` | `"Sample Author"` |
| `championship` | `"Sample Championship"` |
| `matchDate` | `"2026-01-01T16:00:00"` |
| `homeTeam` | `"Sample Home"` |
| `awayTeam` | `"Sample Away"` |
| `homeScore` | `2` |
| `awayScore` | `0` |
| `team` | `"Sample Team"` |
| `position` | `1` |
| `points` | `30` |
| `changeType` | `"NEW"` |
| `changedFields` | `[]` |
| `firstSeenAt` | `"2026-09-18T08:00:00+00:00"` |
| `lastSeenAt` | `"2026-09-18T08:00:00+00:00"` |

Match records from a championship section also carry team ids, acronyms, penalties, status, broadcast label, and venue; match records read from a direct match URL carry venue, venue region and locality, round, and a canonical URL. Standing records also carry team id, acronym, played, wins, draws, losses, goals for and against, goal difference, win percentage, recent form, promotion or relegation zone, and crest URL. Championship sections also return the page's top-scorers ranking as `scorer` records (rank, player, position on the pitch, team, goals, photo URL), so a championship section page can return up to about 50 more records, each saved and billed like any other record; **Maximum records** caps them. Search results also carry a `source` label (the publishing site for articles, the channel or programme for videos). Article cards enriched with details also carry the full section list and text length; articles read directly by URL add author location and a canonical URL.

### How to Use

#### Search mode

**Search by keyword:**

```json
{
  "mode": "search",
  "queries": ["flamengo", "Libertadores"],
  "maxItems": 20,
  "maxPages": 2
}
```

#### Link mode (URLs or section paths)

**Read links or sections:**

```json
{
  "mode": "urls",
  "urls": ["/", "/futebol/", "https://ge.globo.com/futebol/libertadores/"],
  "fetchDetails": true,
  "maxItems": 10
}
```

Supported link shapes (each is verified against the live site):

| Shape | Example |
|-------|---------|
| Homepage | `https://ge.globo.com/` |
| Sport section | `https://ge.globo.com/futebol/` |
| Competition page | `https://ge.globo.com/futebol/brasileirao-serie-a/` |
| Other-sport section | `https://ge.globo.com/basquete/nba/` |
| Team page | `https://ge.globo.com/futebol/times/flamengo/` |
| Regional team page | `https://ge.globo.com/ba/futebol/times/bahia/` |
| Section feed page (starts at that page, never tombstones EXPIRED) | `https://ge.globo.com/futebol/brasileirao-serie-a/index/feed/pagina-2.ghtml` |
| Team feed page | `https://ge.globo.com/futebol/times/flamengo/index/feed/pagina-2.ghtml` |
| Article | `https://ge.globo.com/futebol/brasileirao-serie-a/noticia/2026/10/29/vasco-x-flamengo-onde-assistir-ao-vivo-horario-e-escalacoes.ghtml` |
| Match page | `https://ge.globo.com/ba/futebol/brasileirao-serie-a/jogo/28-10-2026/bahia-sao-paulo.ghtml` |
| Video page | `https://ge.globo.com/video/hulk-discute-com-torcedor-do-fluminense-15140106.ghtml` |
| Videos hub (reads the latest videos) | `https://ge.globo.com/videos/` |
| Section videos hub (plural, that section's videos) | `https://ge.globo.com/cartola/videos/` |
| Competition videos listing (that competition's videos) | `https://ge.globo.com/futebol/brasileirao-serie-a/videos/` |
| Section video hub (singular, that section's videos) | `https://ge.globo.com/combate/video/` |
| State or regional section page | `https://ge.globo.com/rj/futebol/` |
| Search page (uses its `q` value) | `https://ge.globo.com/busca/?q=flamengo` |
| Legacy `http://` link (an alias, read as `https://`; not in the default list) | `http://ge.globo.com/futebol/` |
| Former site host (an alias, read as ge.globo.com; not in the default list) | `https://globoesporte.globo.com/futebol/` |

Links from any other site are skipped with a warning in the run log, and a link that is read but returns no record logs a warning that names it. A search term with no match also logs a warning.

**Default input:** URL mode with the `urls` field left untouched now reads one example of each distinct shape above (the two alias rows are accepted but not pre-filled, since they resolve to a section already listed), instead of nothing. Set `maxItems` to bound the run.

A bare section path and a full section URL are the same page -- use whichever is handier. (The old `mode: "sections"` and the `sections` field keep working for saved tasks; both fold into this mode.)

**Scope notes.** GE search returns newest-first results only, so there is no sort or content-type input. Pick a sport with `sportsCategory`, or paste section links. Matches, standings (team ids, acronyms, played, wins, draws, losses, goals for and against, goal difference, win percentage, form, zone, crest URL) and article pages come from the same link mode. Topics outside ge.globo.com (general news, Cartola, recipes, podcasts, rural, auto, celebrities) are out of scope.

#### Output views

The dataset has these views in the Console: Globo GE records (all), Articles, Videos, Matches, Standings, Article detail (full text and author) and Changes (incremental classification and changed fields).

#### Run it from your code

Python:

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("abotapi/globo-ge").call(run_input={"mode": "search", "queries": ["flamengo"], "maxItems": 20})
for record in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(record["recordType"], record["title"])
```

JavaScript:

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

const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('abotapi/globo-ge').call({ mode: 'search', queries: ['flamengo'], maxItems: 20 });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
```

Or connect it to Make, Zapier, n8n, Google Sheets or webhooks from the **Integrations** tab.

#### Recurring monitoring

**Only new or changed content:**

```json
{
  "mode": "search",
  "queries": ["Libertadores"],
  "incrementalMode": true,
  "stateKey": "libertadores-news",
  "emitUnchanged": false,
  "emitExpired": false,
  "maxItems": 50
}
```

### Input Parameters

| Parameter | Type | Default | Description |
| --- | --- | --- | --- |
| `mode` | string | search | Select search or urls. |
| `sportsCategory` | string | all | URL mode only: adds the section feed for one sport (futebol, basquete, tenis, volei, atletismo). With untouched links it replaces the example set. |
| `queries` | string\[] | \["flamengo"] | Keywords used in search mode. |
| `urls` | string\[] | one example per supported shape (table above) | Public GE links used in URL mode: full URLs or bare section paths. The legacy `sections` field still works and folds in. |
| `fetchDetails` | boolean | false | Add author and full text to article cards. Successfully enriched saved cards add a surcharge. Direct article URLs include available details without an extra charge. |
| `maxItems` | integer | 20 | Maximum rows to save. 0 means no limit, bounded by a hard ceiling of 100000 rows per run. |
| `maxPages` | integer | 0 | Maximum pages per source. 0 walks until the source ends or the item cap is reached, bounded by a hard ceiling of 1000 pages per source. |
| `resumeFromRunId` | string | empty | Previous run or dataset ID whose saved IDs should be skipped. |
| `incrementalMode` | boolean | false | Enable cross-run change classification. |
| `stateKey` | string | empty | Optional name for the incremental campaign. |
| `ignoreFieldsForChanges` | array | `[]` | Incremental mode only. Extra field names, or dotted paths for nested fields, to leave out of `UPDATED` change detection. `modifiedAt` and `scrapedAt` are always left out. |
| `emitUnchanged` | boolean | false | Return and bill extra unchanged rows in incremental mode. With `fetchDetails` on, the detail-enrichment surcharge also applies to those returned rows. |
| `emitExpired` | boolean | false | Return and bill extra missing-record rows after a complete nonempty scan. |
| `mcpConnectors` | string\[] | \[] | Optional connector IDs for exporting the first results. |
| `notionParentPageUrl` | string | empty | Optional parent page for a connector export. |
| `maxNotifyListings` | integer | 50 | Maximum records offered to connector exports. |
| `proxyConfiguration` | object | Apify Proxy | Optional Apify Proxy configuration. |

#### Resume and recurring updates

`resumeFromRunId` skips records already saved in one previous run or dataset. `incrementalMode` stores a baseline for the same search and labels later observations. Change detection compares every output field except `modifiedAt`, `scrapedAt` and anything you list in `ignoreFieldsForChanges`; those fields stay in the output but never turn a record into `UPDATED`, and `changedFields` names what differed. Widening the ignore list never causes a one-time wave of `UPDATED` rows, because the stored snapshot is compared under the current list. Use one of these modes at a time. Unchanged records are suppressed unless enabled. Missing records are marked EXPIRED only after a complete, nonempty scan with no item or page truncation. A smaller output cap saves only that many new records; later runs can collect the remaining unseen records.

With several search terms or links, `maxItems` is shared out evenly between them, so a term with few results does not pass its unused share to the others. EXPIRED rows count toward `maxItems`: if new and updated rows use up the cap, the remaining EXPIRED rows are not returned in that run or later ones, so leave `maxItems` at 0 when you rely on them. If any source read fails during an incremental run, the saved baseline is kept as it was, so records returned by that run are labelled NEW again on the next run.

### Send results into your apps (MCP connectors)

Connector export is optional. Add connector IDs when an approved connector is configured for the run. Use `notionParentPageUrl` when the selected connector needs a parent page, and `maxNotifyListings` to limit exported records. Connector failures leave the dataset available.

### Output Example

> Sample shape: values are illustrative placeholders, not from a live record.

```json
{
  "id": "sample0match0001",
  "recordType": "match",
  "title": "Sample Home Team x Sample Away Team",
  "url": "https://example.com/futebol/sample-championship/jogo/sample-home-team-sample-away-team.ghtml",
  "summary": "Match card from the public GE sports feed.",
  "section": "sample-championship",
  "championship": "Sample Championship",
  "matchDate": "2026-01-01T16:00:00",
  "homeTeam": "Sample Home Team",
  "awayTeam": "Sample Away Team",
  "homeScore": 2,
  "awayScore": 0,
  "publishedAt": "2026-01-01T18:00:00Z",
  "modifiedAt": "2026-01-01T18:05:00Z",
  "changeType": "NEW",
  "changedFields": [],
  "firstSeenAt": "2026-09-18T08:00:00+00:00",
  "lastSeenAt": "2026-09-18T08:00:00+00:00"
}
```

### Plan Requirement

An Apify account is required. The actor starts on the Apify Proxy datacenter/automatic pool, because GE showed no challenge on plain connections. Whether a datacenter exit alone is always accepted has not been guaranteed for every account, so the actor watches what your plan allows instead of assuming it.

- If the default connection is refused, the run logs "The selected connection is unavailable to this run. Apify free plans do not include residential proxies. Continuing on a backup connection; some pages may still be unavailable." and keeps going on a backup connection. When that backup serves a page, the log says "Served over the backup connection (the default connection was unavailable)."
- If nothing could be read after that, the run fails with "No results: residential proxies are unavailable on this run (Apify free plans do not include them), and the backup connection could not load the requested Globo GE pages." Upgrade your Apify plan or supply your own proxy URLs, then run again.
- If the proxy refuses your account outright, the run fails with "The proxy connection was refused for this account, so no page could be read. Your Apify plan does not include proxy access; a paid plan is required."
- If the requests simply failed, the message is "Could not load any results page ... This is a connection problem, not an empty search."

Custom proxy URLs are used as given, with no escalation.

### FAQ

#### How much does it cost?

You pay per record saved, plus a one-time actor-start charge, plus a small surcharge for each article card successfully enriched with `fetchDetails` (the detail-enrichment event, one unit per enriched card), charged one card at a time right after that card is saved (never for skipped or failed cards, or for unchanged cards that incremental mode suppresses; with `emitUnchanged` on, returned unchanged cards that were enriched are charged too). The **Pricing** tab shows the current rates. Use **Maximum records** to cap the cost of any run.

#### Is it legal to scrape GE (ge.globo.com)?

This actor collects only publicly available sports content. You are responsible for how you use it: follow GE's terms and the laws that apply to you, and get legal advice if you plan commercial redistribution. Scores, results and standings are generally facts, but article text, photos and videos may be subject to third-party rights.

#### Can I get only new or updated content on a schedule?

Yes. Schedule the actor from the **Schedules** tab and turn on **Incremental changes for scheduled runs**. Each run then labels records NEW, UPDATED, UNCHANGED, REAPPEARED, or EXPIRED, and unchanged ones are not billed unless you turn on `emitUnchanged`.

#### Can I use Resume and Incremental mode together?

No, and the run fails fast with a clear message if you try. They solve different problems: `resumeFromRunId` continues one interrupted run so you do not re-pay for records it already saved, while incremental mode tracks the same search or link scope across many separate scheduled runs. Use one or the other for a given campaign.

#### Why did my run fail instead of returning an empty dataset?

If every source read was refused or errored, the run stops with a clear message so "nothing found" is never confused with "nothing could be read". Run it again in a few minutes. If some sources answered and genuinely carried nothing while others failed, you still get a quiet success naming how many reads failed.

#### Can I use it with AI agents or MCP?

Yes. Call it from any Apify integration or MCP client, and use the connector field to push results into Notion, Linear or Airtable.

### 🔗 Want more sports data?

Pair this actor with these related scrapers from the same team:

<table>
<tr><td>⚽ <a href="https://apify.com/abotapi/onefootball-com-scraper"><b>OneFootball Scraper</b></a><br>Scrape public OneFootball data including football news, upcoming fixtures, match results...</td><td>⚽ <a href="https://apify.com/abotapi/fotmob-scraper"><b>FotMob Scraper ⚽ Match Details, Stats, Lineups &amp; Players</b></a><br>Pull structured football data from FotMob: match details with scores, team stats, events...</td></tr>
<tr><td>⚽ <a href="https://apify.com/abotapi/sofascore-scraper"><b>SofaScore Scraper ⚽ Live Scores, Stats, Players &amp; Odds</b></a><br>Pull structured sports data from SofaScore across football, basketball, tennis, and 20+...</td><td>⚽ <a href="https://apify.com/abotapi/sportsbook-odds-scraper"><b>Sportsbook Odds Scraper (1xBet, Melbet, Linebet, Paripulse)</b></a><br>Collect live and prematch betting odds from 1xBet, Melbet, Linebet and Paripulse. Give it...</td></tr>
<tr><td>⚽ <a href="https://apify.com/abotapi/hotstar-com-scraper"><b>JioHotstar Scraper</b></a><br>Scrape the JioHotstar catalog by content type or URL. Extract shows, movies, episodes...</td><td>⚽ <a href="https://apify.com/abotapi/strava-public-data-scraper"><b>Strava Data Scraper</b></a><br>Scrape public Strava data: clubs (members, location, sport, settings), athlete profiles...</td></tr>
</table>

👉 [Browse all abotapi scrapers](https://apify.com/abotapi)

### 💬 Support

- 🐞 **Found a bug or a missing field?** Open a ticket on the [Issues tab](https://apify.com/abotapi/globo-ge/issues/open). We usually reply within hours.
- 🛠️ **Need another site, extra fields or a private build?** Email <contact@abotapi.com>.
- ⭐ **Enjoying it?** A quick review on the actor page helps other users find it.

# Actor input Schema

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

Search by keywords, or paste public GE links (full URLs or bare section paths).

## `queries` (type: `array`):

One or more public GE search terms.

## `urls` (type: `array`):

Public ge.globo.com links -- full URLs (homepage, section, competition, team, state page, feed page, search, article, match, video, or a videos hub) and bare section paths such as / or /futebol/brasileirao-serie-a/ both work. The former globoesporte.globo.com host is read as ge.globo.com. Used only in URL mode.

## `sportsCategory` (type: `string`):

URL mode only: add the live GE section feed for one sport (futebol, basquete, tenis, volei, atletismo). All leaves your links unchanged.

## `fetchDetails` (type: `boolean`):

Add author and full text to article cards when available. Successfully enriched saved cards add a surcharge. Direct article URLs include available details without an extra charge.

## `maxItems` (type: `integer`):

Maximum rows to save. Set 0 for no limit; a hard ceiling of 100000 rows per run always applies.

## `maxPages` (type: `integer`):

Optional page bound per source. Leave at 0 to walk until the public source ends or Maximum records is reached; a hard ceiling of 1000 pages per source always applies.

## `proxyConfiguration` (type: `object`):

Direct public requests are normally sufficient. Apify Proxy can be enabled when needed.

## `resumeFromRunId` (type: `string`):

Paste a previous run or dataset ID. Already-saved record IDs are skipped.

## `incrementalMode` (type: `boolean`):

Classify later observations as NEW, UPDATED, UNCHANGED, REAPPEARED, or EXPIRED. Every output field is compared except modifiedAt and scrapedAt (which move without a real content change) and any field you list in the ignore setting below; changedFields names the fields that differ. EXPIRED is produced only after a complete, uncapped, non-resumed scan.

## `stateKey` (type: `string`):

Optional name for the recurring monitoring campaign. Leave empty for an automatic scope hash.

## `emitUnchanged` (type: `boolean`):

Incremental mode only. Return and bill extra rows for records that did not change.

## `emitExpired` (type: `boolean`):

Incremental mode only. Return and bill extra rows for missing records after a complete uncapped nonempty scan.

## `ignoreFieldsForChanges` (type: `array`):

Optional. Field names to leave out of UPDATED change detection, on top of modifiedAt and scrapedAt, which are always left out. Use it if a field in your setup changes on its own without a real content change. Nested fields can be given as a dotted path. The fields still appear in the output; they just no longer trigger UPDATED.

## `mcpConnectors` (type: `array`):

Optional connector IDs for a best-effort side-channel export. The full dataset remains unchanged.

## `notionParentPageUrl` (type: `string`):

Optional parent page ID or URL for Notion export.

## `maxNotifyListings` (type: `integer`):

Maximum records sent to each connector. Does not affect the dataset.

## Actor input object example

```json
{
  "mode": "search",
  "queries": [
    "flamengo"
  ],
  "urls": [
    "https://ge.globo.com/",
    "https://ge.globo.com/futebol/",
    "https://ge.globo.com/futebol/brasileirao-serie-a/",
    "https://ge.globo.com/basquete/nba/",
    "https://ge.globo.com/futebol/times/flamengo/",
    "https://ge.globo.com/ba/futebol/times/bahia/",
    "https://ge.globo.com/futebol/brasileirao-serie-a/index/feed/pagina-2.ghtml",
    "https://ge.globo.com/futebol/times/flamengo/index/feed/pagina-2.ghtml",
    "https://ge.globo.com/futebol/brasileirao-serie-a/noticia/2026/10/29/vasco-x-flamengo-onde-assistir-ao-vivo-horario-e-escalacoes.ghtml",
    "https://ge.globo.com/ba/futebol/brasileirao-serie-a/jogo/28-10-2026/bahia-sao-paulo.ghtml",
    "https://ge.globo.com/video/hulk-discute-com-torcedor-do-fluminense-15140106.ghtml",
    "https://ge.globo.com/videos/",
    "https://ge.globo.com/cartola/videos/",
    "https://ge.globo.com/futebol/brasileirao-serie-a/videos/",
    "https://ge.globo.com/combate/video/",
    "https://ge.globo.com/rj/futebol/",
    "https://ge.globo.com/busca/?q=flamengo"
  ],
  "sportsCategory": "all",
  "fetchDetails": false,
  "maxItems": 20,
  "maxPages": 0,
  "proxyConfiguration": {
    "useApifyProxy": true
  },
  "incrementalMode": false,
  "emitUnchanged": false,
  "emitExpired": false,
  "ignoreFieldsForChanges": [],
  "mcpConnectors": [],
  "maxNotifyListings": 50
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

## `articles` (type: `string`):

No description

## `videos` (type: `string`):

No description

## `matches` (type: `string`):

No description

## `standings` (type: `string`):

No description

## `scorers` (type: `string`):

No description

## `detail` (type: `string`):

No description

## `changes` (type: `string`):

No description

# 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 = {
    "mode": "search",
    "queries": [
        "flamengo"
    ],
    "urls": [
        "https://ge.globo.com/",
        "https://ge.globo.com/futebol/",
        "https://ge.globo.com/futebol/brasileirao-serie-a/",
        "https://ge.globo.com/basquete/nba/",
        "https://ge.globo.com/futebol/times/flamengo/",
        "https://ge.globo.com/ba/futebol/times/bahia/",
        "https://ge.globo.com/futebol/brasileirao-serie-a/index/feed/pagina-2.ghtml",
        "https://ge.globo.com/futebol/times/flamengo/index/feed/pagina-2.ghtml",
        "https://ge.globo.com/futebol/brasileirao-serie-a/noticia/2026/10/29/vasco-x-flamengo-onde-assistir-ao-vivo-horario-e-escalacoes.ghtml",
        "https://ge.globo.com/ba/futebol/brasileirao-serie-a/jogo/28-10-2026/bahia-sao-paulo.ghtml",
        "https://ge.globo.com/video/hulk-discute-com-torcedor-do-fluminense-15140106.ghtml",
        "https://ge.globo.com/videos/",
        "https://ge.globo.com/cartola/videos/",
        "https://ge.globo.com/futebol/brasileirao-serie-a/videos/",
        "https://ge.globo.com/combate/video/",
        "https://ge.globo.com/rj/futebol/",
        "https://ge.globo.com/busca/?q=flamengo"
    ],
    "fetchDetails": false,
    "maxItems": 20,
    "maxPages": 0,
    "proxyConfiguration": {
        "useApifyProxy": true
    },
    "incrementalMode": false,
    "emitUnchanged": false,
    "emitExpired": false,
    "ignoreFieldsForChanges": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("abotapi/globo-ge").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 = {
    "mode": "search",
    "queries": ["flamengo"],
    "urls": [
        "https://ge.globo.com/",
        "https://ge.globo.com/futebol/",
        "https://ge.globo.com/futebol/brasileirao-serie-a/",
        "https://ge.globo.com/basquete/nba/",
        "https://ge.globo.com/futebol/times/flamengo/",
        "https://ge.globo.com/ba/futebol/times/bahia/",
        "https://ge.globo.com/futebol/brasileirao-serie-a/index/feed/pagina-2.ghtml",
        "https://ge.globo.com/futebol/times/flamengo/index/feed/pagina-2.ghtml",
        "https://ge.globo.com/futebol/brasileirao-serie-a/noticia/2026/10/29/vasco-x-flamengo-onde-assistir-ao-vivo-horario-e-escalacoes.ghtml",
        "https://ge.globo.com/ba/futebol/brasileirao-serie-a/jogo/28-10-2026/bahia-sao-paulo.ghtml",
        "https://ge.globo.com/video/hulk-discute-com-torcedor-do-fluminense-15140106.ghtml",
        "https://ge.globo.com/videos/",
        "https://ge.globo.com/cartola/videos/",
        "https://ge.globo.com/futebol/brasileirao-serie-a/videos/",
        "https://ge.globo.com/combate/video/",
        "https://ge.globo.com/rj/futebol/",
        "https://ge.globo.com/busca/?q=flamengo",
    ],
    "fetchDetails": False,
    "maxItems": 20,
    "maxPages": 0,
    "proxyConfiguration": { "useApifyProxy": True },
    "incrementalMode": False,
    "emitUnchanged": False,
    "emitExpired": False,
    "ignoreFieldsForChanges": [],
}

# Run the Actor and wait for it to finish
run = client.actor("abotapi/globo-ge").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 '{
  "mode": "search",
  "queries": [
    "flamengo"
  ],
  "urls": [
    "https://ge.globo.com/",
    "https://ge.globo.com/futebol/",
    "https://ge.globo.com/futebol/brasileirao-serie-a/",
    "https://ge.globo.com/basquete/nba/",
    "https://ge.globo.com/futebol/times/flamengo/",
    "https://ge.globo.com/ba/futebol/times/bahia/",
    "https://ge.globo.com/futebol/brasileirao-serie-a/index/feed/pagina-2.ghtml",
    "https://ge.globo.com/futebol/times/flamengo/index/feed/pagina-2.ghtml",
    "https://ge.globo.com/futebol/brasileirao-serie-a/noticia/2026/10/29/vasco-x-flamengo-onde-assistir-ao-vivo-horario-e-escalacoes.ghtml",
    "https://ge.globo.com/ba/futebol/brasileirao-serie-a/jogo/28-10-2026/bahia-sao-paulo.ghtml",
    "https://ge.globo.com/video/hulk-discute-com-torcedor-do-fluminense-15140106.ghtml",
    "https://ge.globo.com/videos/",
    "https://ge.globo.com/cartola/videos/",
    "https://ge.globo.com/futebol/brasileirao-serie-a/videos/",
    "https://ge.globo.com/combate/video/",
    "https://ge.globo.com/rj/futebol/",
    "https://ge.globo.com/busca/?q=flamengo"
  ],
  "fetchDetails": false,
  "maxItems": 20,
  "maxPages": 0,
  "proxyConfiguration": {
    "useApifyProxy": true
  },
  "incrementalMode": false,
  "emitUnchanged": false,
  "emitExpired": false,
  "ignoreFieldsForChanges": []
}' |
apify call abotapi/globo-ge --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,abotapi/globo-ge"
        }
    }
}
```

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/ZhCsfWs7zOXM5qJlu/builds/hpDzEzKPYNkWstuYz/openapi.json
