Skip to main content

MediaCloud Python API Client

This is a python client for accessing the MediaCloud API v4. This allows you to perform cross-platform searches and also browse our collection/source/feed directory.

pylint pytest GitHub license

Usage

First sign up for an API key. Then

pip install mediacloud

Check CHANGELOG.md for a detailed history of changes.

Examples

Take a look at the test in the mediacloud/test/ module for more detailed examples.

Count Stories Matching a Query

import mediacloud.api
US_NATIONAL_COLLECTION = 34412234
mc_search = mediacloud.api.SearchApi(YOUR_MC_API_KEY)
all_stories = []
pagination_token = None
more_stories = True
while more_stories:
    page, pagination_token = mc_search.story_list('robots', start_date= , end_date= collection_ids=[US_NATIONAL_COLLECTION])
    all_stories += page
    more_stories = pagination_token is not None
print(f"Retrived {len(all_stories)} matching stories")

Page Through Stories Matching a Query

import mediacloud.api
INDIA_NATIONAL_COLLECTION = 34412118
mc_search = mediacloud.api.SearchApi(YOUR_MC_API_KEY)
all_stories = []
pagination_token = None
more_stories = True
while more_stories:
    page, pagination_token = mc_search.story_list('modi AND biden', collection_ids=[INDIA_NATIONAL_COLLECTION],
                                                  pagination_token=pagination_token)
    all_stories += page
    more_stories = pagination_token is not None
print(f"Retrived {len(all_stories)} matching stories")

Fetch all Sources in a Collection

import mediacloud.api
INDIA_NATIONAL_COLLECTION = 34412118
SOURCES_PER_PAGE = 100  # the number of sources retrieved per page
mc_directory = mediacloud.api.DirectoryApi(YOUR_MC_API_KEY)
sources = []
offset = 0   # offset for paging through
while True:
    # grab a page of sources in the collection
    response = mc_directory.source_list(collection_id=INDIA_NATIONAL_COLLECTION, limit=SOURCES_PER_PAGE, offset=offset)
    # add it to our running list of all the sources in the collection
    sources += response['results']
    # if there is no next page then we're done so bail out
    if response['next'] is None:
        break
    # otherwise setup to fetch the next page of sources
    offset += len(response['results'])
print("India National Collection has {} sources".format(len(sources)))

Development

If you are interested in adding code to this module, first clone the GitHub repository.

Installing

  • flit install
  • pre-commit install

Testing

pytest

Distributing a New Version

  1. Run pytest to make sure all the test pass
  2. Update the version number in pyproject.toml
  3. Make a brief note in the CHANGELOG.md about what changes
  4. Commit changes, and tag commit with version number
  5. Push to main

When client improvements are of great benefit (major new functionality, speed/rate improvements) update web-search API_PYTHON_CLIENT config/default so that library users see a (once a run) warning message that a newer version is available.

Reminder: This library does not currently detect older than expected versions of the server, so if changes here depend on a newer web-search server running, delay release of this library until the new server version is in production, which means a three-step process:

  1. New server in production
  2. Release new client
  3. Update server API_PYTHON_CLIENT to new client version

Doing this out of order with any delay may annoy users!

Metadata

Release files for mediacloud 5.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mediacloud 5.2.0
File Size Uploaded
mediacloud-5.2.0.tar.gz 29.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for mediacloud 5.2.0
File Interpreter ABI Platform
mediacloud-5.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 63.0 kB

Release files / mediacloud-5.2.0.tar.gz

Download URL mediacloud-5.2.0.tar.gz
Size 29.7 kB
Tags Source
SHA-256 checksum
How to use checksums
f540c9de5fadf8ed9fbc5218daaaff8213d0df127ae0da1e69d3aa8570126286
BLAKE2b-256 checksum
How to use checksums
db98b1374a9fddf64d4a960114bc97136186a816a56a7c5450b104e0b29b7c52
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 6, 2026.

Transparency log

Release files / mediacloud-5.2.0-py3-none-any.whl

Download URL mediacloud-5.2.0-py3-none-any.whl
Size 33.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d4f1b0fca44f38e11a97d64f785dcb9a8597b544b1b13bd229ee556edc928aa9
BLAKE2b-256 checksum
How to use checksums
9b5e1b6b0542f3fc7aae41de16aa03e1b3e9d61ca9d2eeae34205ed39ccd2bae
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 6, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

5.2.0 This release

2 release files

5.1.0

2 release files

5.0.0

2 release files

4.6.0

2 release files

4.5.0

2 release files

4.4.1

2 release files

4.4.0

2 release files

4.3.0

2 release files

4.2.0

2 release files

4.1.4

2 release files

4.1.3

2 release files

4.1.2

2 release files

4.1.1

2 release files

4.1.0

2 release files

4.0.1

1 release file

4.0.0

1 release file

3.13.0

1 release file

3.12.5

1 release file

3.12.4

1 release file

3.12.3

1 release file

3.12.2

1 release file

3.12.1

1 release file

3.12.0

1 release file

3.11.3

1 release file

3.11.2

1 release file

3.11.1

1 release file

3.11.0

1 release file

3.10.0

1 release file

3.9.3

1 release file

3.9.2

1 release file

3.9.1

1 release file

3.9.0

1 release file

3.8.0

1 release file

3.7.6

1 release file

3.7.5

1 release file

3.7.4

1 release file

3.7.3

1 release file

3.7.2

1 release file

3.7.1

1 release file

3.7.0

1 release file

3.6.5

1 release file

3.6.4

1 release file

3.6.3

1 release file

3.6.2

1 release file

3.6.1

2 release files

3.6.0

1 release file

3.5.1

1 release file

3.5.0

1 release file

3.4.4

1 release file

3.4.3

1 release file

3.4.2

2 release files

3.4.1

1 release file

3.4.0

1 release file

3.3.1

1 release file

3.3.0

1 release file

3.2.3

1 release file

3.2.2

1 release file

3.2.1

1 release file

3.2.0

1 release file

3.1.1

1 release file

3.1.0

1 release file

3.0.4

1 release file

3.0.3

1 release file

3.0.2

1 release file

3.0.1

1 release file

3.0.0

1 release file

2.53.0

1 release file

2.52.0

1 release file

2.51.0

1 release file

2.50.0

1 release file

2.49.0

1 release file

2.48.0

1 release file

2.47.0

1 release file

2.46.0

1 release file

2.45.0

1 release file

2.44.0

1 release file

2.43.3

1 release file

2.43.2

1 release file

2.43.1

1 release file

2.43.0

1 release file

2.42.0

1 release file

2.41.0

1 release file

2.40.1

1 release file

2.40.0

1 release file

2.39.2

1 release file

2.39.1

1 release file

2.39.0

1 release file

2.38.2

1 release file

2.38.1

1 release file

2.38.0

1 release file

2.37.0

1 release file

2.36.2

1 release file

2.36.1

1 release file

2.36.0

1 release file

2.35.6

1 release file

2.35.5

1 release file

2.35.3

1 release file

2.35.2

1 release file

2.35.1

1 release file

2.35.0

1 release file

2.34.0

1 release file

2.33.1

1 release file

2.33.0

1 release file

2.32.0

1 release file

2.31.0

1 release file

2.30.0

1 release file

2.29.1

1 release file

2.29.0

1 release file

2.28.0

1 release file

2.27.0

1 release file

2.26.1

1 release file

2.26.0

1 release file

2.25.0

1 release file

2.24.1

1 release file

2.24.0

1 release file

2.23.0

1 release file

2.22.2

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page