MCL 6.0 URLs

As part of Meta's ongoing efforts to improve the researcher experience, Meta Content Library (MCL) API now uses Meta's REST API, and is now specified with OpenAPI. As part of these improvements, the URLs for querying Meta Content Library API have also been updated and streamlined.

Synchronous vs. asynchronous queries in MCL 6.0

Meta now strongly recommends that you use synchronous queries for exploration and validation only, and instead use asynchronous queries to return larger data sets for analysis and research. Synchronous queries will only return the top 1000 results.

Transforming URLs for MCL 6.0

Transformation rules

To transform the URLs in requests in your notebooks, you can refer to the tables in the sections that follow URL changes for MCL 6.0, or apply the following rules:

  1. The URL segment platform_item becomes /platform/item. For example, GET /search/facebook_posts becomes GET /facebook/posts/preview.
  2. GET requests to URLs for sync search endpoints for an item type, such as GET /search/facebook_posts become GET requests to the platform name, followed by the item type, followed by preview, such as GET /facebook/posts/preview.
  3. GET requests that create a job on the server, such as GET /async_search/facebook_posts, become POST requests to the updated URL, such as POST /facebook/posts/job.
  4. The estimate parameter in a request becomes the terminal estimate segment of the URL. For example, GET /search/facebook_posts?estimate=1 becomes GET /facebook/posts/estimate.
  5. GET requests for URLs to retrieve a specific item type on a platform, such as GET /{facebook_post_id}, are now the platform name, followed by the item type, followed by the id, such as GET /facebook/posts/{id}.
  6. Synchronous and asynchronous GET requests for URLS that return summaries, such as GET /search/facebook_posts?estimate=1 and GET /async_search/facebook_posts?estimate=1, are now the platform name, followed by the item type, followed by "estimate," such as GET /facebook/posts/estimate.

migrate_path helper method

You can use the migrate_path method to get the updated MCL 6.0 URL and HTTP verb by passing it your URL and parameters. For example, if you currently call get() with the arguments path="async_search/facebook_posts" and params={"q": "cybercrime", "since": "2025-10-10"}, you can pass those same arguments to migrate_path to see the new path and method, as shown in the following examples.

library(reticulate)
client <- import("metacontentlibraryapi")$MetaContentLibraryAPIClient

response <- client$migrate_path(
        path="async_search/facebook_posts",
        params = list("q"="cybercrime", "since"="2025-10-10")
)
jsonlite::fromJSON(response$text, flatten=TRUE)
from metacontentlibraryapi import MetaContentLibraryAPIClient as client

tresponse = client.migrate_path(
    path="async_search/facebook_posts",
    params={"q": "cybercrime", "since": "2025-10-10"}
)
display(response.json())

The above code will display {'path': 'facebook/posts/job', 'method': 'POST'}

In your existing code, you can then:

  • Replace "async_search/facebook_posts" with "facebook/posts/job"
  • Replace get with post

OpenAPI specification

Starting with API version v6.0, an OpenAPI model is available to provide a standardized specification of all API endpoints and their capabilities. This model enables users to programmatically discover and interact with the API using modern tools and libraries that support the OpenAPI standard. This documentation update is intended to improve integration, automation, and compatibility for all API consumers.

You can use the following code to retrieve the complete specification:

library(reticulate)
client <- import("metacontentlibraryapi")$MetaContentLibraryAPIClient

client$openapi_spec()
from metacontentlibraryapi import (
    MetaContentLibraryAPIClient as client,
)

spec = client.openapi_spec()
display(spec)

URL change tables for MCL 6.0

The following sections contain tables of URL changes for MCL 6.0. You can use these tables to locate your existing MCL 5.0 URLs and their 6.0 equivalents.

In this section:

Facebook URL changes

Facebook posts

Description MCL 5.0 path MCL 6.0 path

Synchronous search

GET /search/facebook_posts

GET /facebook/posts/preview

ID-based retrieval

GET /{facebook_post_id}

GET /facebook/posts/{id}

Synchronous shared search

GET /search/facebook_posts/{alias_id}

GET /facebook/posts/preview/{alias_id}

Synchronous and asynchronous estimates

GET /search/facebook_posts?estimate=1 & GET /async_search/facebook_posts?estimate=1

GET /facebook/posts/estimate

Asynchronous search

GET /async_search/facebook_posts

POST /facebook/posts/job

Asynchronous shared searc

GET /async_search/facebook_posts/{alias_id}

POST /facebook/posts/job/{alias_id}

Synchronous and asynchronous shared estimates

GET /search/facebook_posts/{alias_id}?estimate=1 & GET /async_search/facebook_posts/{alias_id}?estimate=1

GET /facebook/posts/estimate/{alias_id}

Facebook profiles

Description MCL 5.0 path MCL 6.0 path

Synchronous search

GET /search/facebook_profiles

GET /facebook/profiles/preview

ID-based retrieval

GET /{facebook_profile_id

GET /facebook/profiles/{id}

Asynchronous search

GET /async_search/facebook_profiles

POST /facebook/profiles/job

Synchronous and asynchronous estimates

GET /search/facebook_profiles?estimate=1 & GET /async_search/facebook_profiles?estimate=1

GET /facebook/profiles/estimate

Facebook groups

Description MCL 5.0 path MCL 6.0 path

Synchronous search

GET /search/facebook_groups

GET /facebook/groups/preview

ID-based retrieval

GET /{facebook_group_id}

GET /facebook/groups/{id}

Asynchronous search

GET /async_search/facebook_groups

POST /facebook/groups/job

Synchronous and asynchronous estimates

GET /search/facebook_groups?estimate=1 & GET /async_search/facebook_groups?estimate=1

GET /facebook/groups/estimate

Facebook pages

Description MCL 5.0 path MCL 6.0 path

Synchronous search

GET /search/facebook_pages

GET /facebook/pages/preview

ID-based retrieval

GET /{facebook_page_id}

GET /facebook/pages/{id}

Asynchronous search

GET /async_search/facebook_pages

POST /facebook/pages/job

Synchronous and asynchronous estimates

GET /search/facebook_groups?estimate=1 & GET /async_search/facebook_groups?estimate=1

GET /facebook/groups/estimate

Facebook events

Description MCL 5.0 path MCL 6.0 path

Synchronous search

GET /search/facebook_events

GET /facebook/events/preview

ID-based retrieval

GET /{facebook_event_id}

GET /facebook/events/{id}

Asynchronous search

GET /async_search/facebook_events

POST /facebook/events/job

Synchronous and asynchronous estimates

GET /async_search/facebook_events?estimate=1

GET /facebook/events/estimate

Facebook Marketplace listings

Description MCL 5.0 path MCL 6.0 path

Synchronous search

GET /search/facebook_marketplace_listings

GET /facebook/marketplace-listings/preview

ID-based retrieval

GET /{facebook_marketplace_listings_id}

GET /facebook/marketplace-listings/{id}

Synchronous shared search

GET /search/facebook_marketplace_listings/{alias_id}

GET /facebook/marketplace-listings/preview/{alias_id}

Asynchronous search

GET /async_search/facebook_marketplace_listings

POST /facebook/marketplace-listings/job

Synchronous and asynchronous estimates

GET /search/facebook_marketplace_listings?estimate=1 & GET /async_search/facebook_marketplace_listings?estimate=1

GET /facebook/marketplace-listings/estimate

Asynchronous shared search

GET /async_search/facebook_marketplace_listings/{alias_id}

POST /facebook/marketplace-listings/job/{alias_id}

Shared search estimate (both synchronous and asynchronous search)

GET /async_search/facebook_marketplace_listings/{alias_id}?estimate=1

GET /facebook/marketplace-listings/estimate/{alias_id}

Facebook comments

Description MCL 5.0 path MCL 6.0 path

Synchronous fetch for single pos

GET /{facebook_post_id}/comments

GET /facebook/posts/{id}/comments/preview

Synchronous fetch for single comment

GET /{facebook_comment_id}/comments

/facebook/comments/{id}/replies/preview

ID-based retrieval

GET /{facebook_comment_id}

GET /facebook/comments/{id}

Asynchronous fetch for single post

GET /{facebook_post_id}/async_comments

Not supported: Bulk comments endpoint can be used instead, accepting multiple ids

Synchronous and asynchronous estimates

GET /{facebook_post_id}/comments?estimate=1 & GET /{facebook_post_id}/async_comments?estimate=1

Not supported: Bulk comments endpoint can be used instead, accepting multiple ids

Asynchronous fetch for single comment

GET /{facebook_comment_id}/async_comments

Not supported: Bulk comments endpoint can be used instead, accepting multiple ids

Estimate for single comment (synchronous and asynchronous

GET /{facebook_comment_id}/async_comments?estimate=1 & GET /{facebook_comment_id}/comments?estimate=1

Not supported: Bulk comments endpoint can be used instead, accepting multiple ids

Facebook fundraisers

Description MCL 5.0 path MCL 6.0 path

Synchronous search

GET /search/facebook_fundraisers

GET /facebook/fundraisers/preview

ID-based retrieval

GET /{facebook_fundraiser_id}

GET /facebook/fundraisers/{id}

Shared search

GET /search/facebook_fundraisers/{alias_id}

GET /facebook/fundraisers/preview/{alias_id}

Synchronous and asynchronous estimates

GET /search/facebook_fundraisers?estimate=1 & GET /async_search/facebook_fundraisers?estimate=1

GET /facebook/fundraisers/estimate

Asynchronous search

GET /async_search/facebook_fundraisers

POST /facebook/fundraisers/job

Asynchronous shared search

GET /async_search/facebook_fundraisers/{alias_id}

POST /facebook/fundraisers/job/{alias_id}

Shared search estimate (synchronous and asynchronous)

GET /search/facebook_fundraisers/{alias_id}?estimate=1 & GET /async_search/facebook_fundraisers/{alias_id}?estimate=1

GET /facebook/fundraisers/estimate/{alias_id}

Facebook nonprofit

Description MCL 5.0 path MCL 6.0 path

ID Based retrieval

GET {facebook_non_profit_id}

GET facebook/fundraiser-nonprofits/{facebook_non_profit_id}

Facebook donations

Description MCL 5.0 path MCL 6.0 path

Fundraiser donations

GET /{facebook_fundraise_id}/donations

GET /facebook/fundraisers/{id}/donations/preview

ID-based retrieval

GET /{facebook_donations_id}

GET /facebook/fundraisers-donations/{id}

Estimate the number of donations

GET /{facebook_fundraise_id}/donations?estimate=1

Not supported

Facebook channels

Description MCL 5.0 path MCL 6.0 path

Synchronous search

NA

GET /facebook/channels/preview

ID-based retrieval

NA

GET /facebook/channels/{id}

Shared search

NA

GET /facebook/channels/preview/{alias_id}

Asynchronous search

NA

POST /facebook/channels/job

Synchronous and asynchronous estimates

NA

GET /facebook/channels/estimate

Asynchronous shared search

NA

POST /facebook/channels/job/{alias_id}

Synchronously or asynchronously estimate shared search

NA

GET /facebook/channels/estimate/{alias_id}

Facebook channel messages

Description MCL 5.0 path MCL 6.0 path

Synchronously fetch messages from a single channel

NA

GET /facebook/channels/{facebook_channel_id}/messages/preview

ID-based retrieval

NA

GET /facebook/channel-messages/{facebook_channel_message_id}

Estimate for single channel messages

NA

Not supported: Bulk messages endpoint can be used instead, accepting multiple ids.

Asynchronous fetch for multiple channels

NA

POST /facebook/channel-messages/job?channel_ids=...

Asynchronous estimate for multiple channels

NA

GET /facebook/channel-messages/estimate?channel_ids=...

Facebook bulk comments

Description MCL 5.0 path MCL 6.0 path

Asynchronous fetch of comments for multiple posts/comments

GET /async_search/facebook_comments?parent_ids=...

POST /facebook/comments/job?parent_ids=...

Asynchronous estimate of comments for multiple posts/comments

GET /async_search/facebook_comments?parent_ids=...&estimate=1

GET /facebook/comments/estimate?parent_ids=...

Instagram

Instagram posts

Description MCL 5.0 path MCL 6.0 path

Synchronous search

GET /search/instagram_posts

GET /instagram/posts/preview

ID-based retrieval

GET /{instagram_post_id}

GET /instagram/posts/{id}

Shared search

GET /search/instagram_posts/{alias_id}

GET /instagram/posts/preview/{alias_id}

Asynchronous search

GET /async_search/instagram_posts

POST /instagram/posts/job

Synchronous and asynchronous estimates

GET /search/instagram_posts?estimate=1 & GET /async_search/instagram_posts?estimate=1

GET /instagram/posts/estimate

Asynchronous shared search

GET /async_search/instagram_posts/{alias_id}

POST /instagram/posts/job/{alias_id}

Synchronously or asynchronously estimate shared search

GET /search/instagram_posts/{alias_id}?estimate=1 & GET /async_search/instagram_posts/{alias_id}?estimate=1

GET /instagram/posts/estimate/{alias_id}

Instagram fundraisers

Description MCL 5.0 path MCL 6.0 path

Synchronous search

GET /search/instagram_fundraisers

GET /instagram/fundraisers/preview

ID-based retrieval

GET /{instagram_fundraiser_id}

GET /instagram/fundraisers/{id}

Shared search

GET /search/instagram_fundraisers/{alias_id}

GET /instagram/fundraisers/preview/{alias_id}

Asynchronous search

GET /async_search/instagram_fundraisers

POST /instagram/fundraisers/job

Synchronous and asynchronous estimates

GET /search/instagram_fundraisers?estimate=1 & GET /async_search/instagram_fundraisers?estimate=1

GET /instagram/fundraisers/estimate

Asynchronous shared search

GET /async_search/instagram_fundraisers/{alias_id}

POST /instagram/fundraisers/job/{alias_id}

Synchronously or asynchronously estimate shared search

GET /search/instagram_fundraisers/{alias_id}?estimate=1 & GET /async_search/instagram_fundraisers/{alias_id}?estimate=1

GET /instagram/fundraisers/estimate/{alias_id}

Instagram channels

Description MCL 5.0 path MCL 6.0 path

Synchronous search

GET /search/instagram_channels

GET /instagram/channels/preview

ID-based retrieval

GET /{instagram_channel_id}

GET /instagram/channels/{id}

Shared search

GET /search/instagram_channels/{alias_id}

GET /instagram/channels/preview/{alias_id}

Asynchronous search

GET /async_search/instagram_channels

POST /instagram/channels/job

Synchronous and asynchronous estimates

GET /search/instagram_channels?estimate=1 & GET /async_search/instagram_channels?estimate=1

GET /instagram/channels/estimate

Asynchronous shared search

GET /async_search/instagram_channels/{alias_id}

POST /instagram/channels/job/{alias_id}

Synchronously or asynchronously estimate shared search

GET /search/instagram_channels/{alias_id}?estimate=1 & GET /async_search/instagram_channels/{alias_id}?estimate=1

GET /instagram/channels/estimate/{alias_id}

Instagram channel messages

Description MCL 5.0 path MCL 6.0 path

Synchronously fetch messages from a single channel

GET {instagram_channel_id}/messages

GET /instagram/channels/{instagram_channel_id}/messages/preview

ID-based retrieval

GET {instagram_channel_message_id}

GET /instagram/channel-messages/{instagram_channel_message_id}

Estimate for single channel messages

GET {instagram_channel_id}/messages?estimate=1

Not supported: Bulk messages endpoint can be used instead, accepting multiple ids.

Asynchronous fetch for multiple channels

GET /async_search/instagram_channel_messages?channel_ids=...

POST /instagram/channel-messages/job?channel_ids=...

Asynchronous estimate for multiple channels

GET /async_search/instagram_channel_messages?channel_ids=...&estimate=1

GET /instagram/channel-messages/estimate?channel_ids=...

Channel message comments

Description MCL 5.0 path MCL 6.0 path

Synchronously fetch comments from a single channel message

GET /{channel_message_id}/comments

GET /instagram/channel-messages/{channel_message_id}/comments/preview

ID-based retrieval

GET /{channel_message_comment_id}

GET /instagram/comments/{channel_message_comment_id}

Accounts

Description MCL 5.0 path MCL 6.0 path

Synchronous search

GET /search/instagram_accounts

GET /instagram/accounts/preview

ID-based retrieval

GET /{instagram_account_id}

GET /instagram/accounts/{id}

Asynchronous search

GET /async_search/instagram_accounts

POST /instagram/accounts/job

Synchronous and asynchronous estimates

GET /search/instagram_accounts?estimate=1 & GET /async_search/instagram_accounts?estimate=1

GET /instagram/accounts/estimate

Comments

Description MCL 5.0 path MCL 6.0 path

Synchronous fetch for single post

GET /{instagram_post_id}/comments

GET /instagram/posts/{id}/comments/preview

Synchronous fetch for single comment

GET /{instagram_comment_id}/comments

GET /instagram/comments/{id}/replies/preview

ID-based retrieval

GET /{instagram_comment_id}

GET /instagram/comments/{id}

Asynchronous fetch for single post

GET /{instagram_post_id}/async_comments

Not supported: Bulk comments endpoint can be used instead, accepting multiple ids.

Synchronous and asynchronous estimates for single post

GET /{instagram_post_id}/comments?estimate=1 & GET /{instagram_post_id}/async_comments?estimate=1

Not supported: Bulk comments endpoint can be used instead, accepting multiple ids.

Asynchronous fetch for single comment

GET /{instagram_comment_id}/async_comments

Not supported: Bulk comments endpoint can be used instead, accepting multiple ids.

Synchronous and asynchronous estimate for single comment

GET /{instagram_comment_id}/comments?estimate=1 & GET /{instagram_comment_id}/async_comments?estimate=1

Not supported: Bulk comments endpoint can be used instead, accepting multiple ids.

Bulk comments

Description MCL 5.0 path MCL 6.0 path

Asynchronously fetch comments for multiple posts/comments/channel-messages

GET /async_search/instagram_comments?parent_ids=...

POST /instagram/comments/job?parent_ids=...

Asynchronously estimate comments for multiple posts/comments/channel-messages

GET /async_search/instagram_comments?parent_ids=...&estimate=1

GET /instagram/comments/estimate?parent_ids=...

WhatsApp

Channels

Description MCL 5.0 path MCL 6.0 path

Synchronous search

NA

GET /whatsapp/channels/preview

ID-based retrieval

NA

GET /whatsapp/channels/{mcl_id}

Shared search

NA

GET /whatsapp/channels/preview/{alias_id}

Asynchronous search

NA

POST /whatsapp/channels/job

Synchronous and asynchronous estimates

NA

GET /whatsapp/channels/estimate

Asynchronous shared search

NA

POST /whatsapp/channels/job/{alias_id}

Synchronously or asynchronously estimate shared search

NA

GET /whatsapp/channels/estimate/{alias_id}

Channel updates

Description MCL 5.0 path MCL 6.0 path

Synchronously fetch updates from a single channel

NA

GET /whatsapp/channels/{whatsapp_channel_id}/updates/preview

ID-based retrieval

NA

GET /whatsapp/channel-updates/{whatsapp_channel_update_id}

Asynchronous fetch for multiple channels

NA

POST /whatsapp/channel-updates/job?channel_ids=...

Estimate for multiple channels

NA

GET /whatsapp/channel-updates/estimate?channel_ids=...

Other URL changes

Lists

Description MCL 5.0 path MCL 6.0 path

Fetch a single producer lists

GET /lists/producers/{alias_id}

GET /lists/producers/{alias_id}

Fetch all your producer lists

NA

GET /lists/producers

Fetch information for a single shared search

GET /collections/shared_search/{alias_id}

GET /lists/shared-searches/{alias_id}

Budget

Description MCL 5.0 path MCL 6.0 path

Fetch budgets

GET /query_budget

GET /budgets

IDs

Description MCL 5.0 path MCL 6.0 path

Fetch type of an ID

NA

GET /ids/{id}