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

Release files for mediacloud 5.1.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.1.0
File Size Uploaded
mediacloud-5.1.0.tar.gz 27.0 kB Details

Built distribution (wheel)

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

Total release size: 57.7 kB

Release files / mediacloud-5.1.0.tar.gz

Download URL mediacloud-5.1.0.tar.gz
Size 27.0 kB
Tags Source
SHA-256 checksum
How to use checksums
ff103cfca7f941e88cff3bbed96d82ca6b792c832060509d1c00e9e3bc24b049
BLAKE2b-256 checksum
How to use checksums
a92deb0c376a5bf1b27e0108549d085ff3843c4f9365a7c3ddf305f3e4b4ec86
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 May 19, 2026.

Transparency log

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

Download URL mediacloud-5.1.0-py3-none-any.whl
Size 30.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
08ea6b382caa6625a2d8c4a51392fbac99b931f0c72c2b5c70c98f44d1fbdfd8
BLAKE2b-256 checksum
How to use checksums
b1b0ee184b3021a2a47eb2df89974377d2cc37a6c7268dccfe9b1be0bc182e1d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 May 19, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

5.1.0 This release

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