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.
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.
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:
platform_item becomes /platform/item. For example, GET /search/facebook_posts becomes GET /facebook/posts/preview.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.GET /async_search/facebook_posts, become POST requests to the updated URL, such as POST /facebook/posts/job.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.GET /{facebook_post_id}, are now the platform name, followed by the item type, followed by the id, such as GET /facebook/posts/{id}.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.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)The above code will display
{'path': 'facebook/posts/job', 'method': 'POST'}
In your existing code, you can then:
"async_search/facebook_posts" with "facebook/posts/job"get with postStarting 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()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:
| Description | MCL 5.0 path | MCL 6.0 path |
|---|---|---|
Synchronous search |
|
|
ID-based retrieval |
|
|
Synchronous shared search |
|
|
Synchronous and asynchronous estimates |
|
|
Asynchronous search |
|
|
Asynchronous shared searc |
|
|
Synchronous and asynchronous shared estimates |
|
|
| Description | MCL 5.0 path | MCL 6.0 path |
|---|---|---|
Synchronous search |
|
|
ID-based retrieval |
|
|
Asynchronous search |
|
|
Synchronous and asynchronous estimates |
|
|
| Description | MCL 5.0 path | MCL 6.0 path |
|---|---|---|
Synchronous search |
|
|
ID-based retrieval |
|
|
Asynchronous search |
|
|
Synchronous and asynchronous estimates |
|
|
| Description | MCL 5.0 path | MCL 6.0 path |
|---|---|---|
Synchronous search |
|
|
ID-based retrieval |
|
|
Asynchronous search |
|
|
Synchronous and asynchronous estimates |
|
|
| Description | MCL 5.0 path | MCL 6.0 path |
|---|---|---|
Synchronous search |
|
|
ID-based retrieval |
|
|
Asynchronous search |
|
|
Synchronous and asynchronous estimates |
|
|
| Description | MCL 5.0 path | MCL 6.0 path |
|---|---|---|
Synchronous search |
|
|
ID-based retrieval |
|
|
Synchronous shared search |
|
|
Asynchronous search |
|
|
Synchronous and asynchronous estimates |
|
|
Asynchronous shared search |
|
|
Shared search estimate (both synchronous and asynchronous search) |
|
|
| Description | MCL 5.0 path | MCL 6.0 path |
|---|---|---|
Synchronous fetch for single pos |
|
|
Synchronous fetch for single comment |
|
|
ID-based retrieval |
|
|
Asynchronous fetch for single post |
| Not supported: Bulk comments endpoint can be used instead, accepting multiple ids |
Synchronous and asynchronous estimates |
| Not supported: Bulk comments endpoint can be used instead, accepting multiple ids |
Asynchronous fetch for single comment |
| Not supported: Bulk comments endpoint can be used instead, accepting multiple ids |
Estimate for single comment (synchronous and asynchronous |
| Not supported: Bulk comments endpoint can be used instead, accepting multiple ids |
| Description | MCL 5.0 path | MCL 6.0 path |
|---|---|---|
Synchronous search |
|
|
ID-based retrieval |
|
|
Shared search |
|
|
Synchronous and asynchronous estimates |
|
|
Asynchronous search |
|
|
Asynchronous shared search |
|
|
Shared search estimate (synchronous and asynchronous) |
|
|
| Description | MCL 5.0 path | MCL 6.0 path |
|---|---|---|
ID Based retrieval |
|
|
| Description | MCL 5.0 path | MCL 6.0 path |
|---|---|---|
Fundraiser donations |
|
|
ID-based retrieval |
|
|
Estimate the number of donations |
|
|
| Description | MCL 5.0 path | MCL 6.0 path |
|---|---|---|
Synchronous search | NA |
|
ID-based retrieval | NA |
|
Shared search | NA |
|
Asynchronous search | NA |
|
Synchronous and asynchronous estimates | NA |
|
Asynchronous shared search | NA |
|
Synchronously or asynchronously estimate shared search | NA |
|
| Description | MCL 5.0 path | MCL 6.0 path |
|---|---|---|
Synchronously fetch messages from a single channel | NA |
|
ID-based retrieval | NA |
|
Estimate for single channel messages | NA | Not supported: Bulk messages endpoint can be used instead, accepting multiple ids. |
Asynchronous fetch for multiple channels | NA |
|
Asynchronous estimate for multiple channels | NA |
|
| Description | MCL 5.0 path | MCL 6.0 path |
|---|---|---|
Asynchronous fetch of comments for multiple posts/comments |
|
|
Asynchronous estimate of comments for multiple posts/comments |
|
|
| Description | MCL 5.0 path | MCL 6.0 path |
|---|---|---|
Synchronous search |
|
|
ID-based retrieval |
|
|
Shared search |
|
|
Asynchronous search |
|
|
Synchronous and asynchronous estimates |
|
|
Asynchronous shared search |
|
|
Synchronously or asynchronously estimate shared search |
|
|
| Description | MCL 5.0 path | MCL 6.0 path |
|---|---|---|
Synchronous search |
|
|
ID-based retrieval |
|
|
Shared search |
|
|
Asynchronous search |
|
|
Synchronous and asynchronous estimates |
|
|
Asynchronous shared search |
|
|
Synchronously or asynchronously estimate shared search |
|
|
| Description | MCL 5.0 path | MCL 6.0 path |
|---|---|---|
Synchronous search |
|
|
ID-based retrieval |
|
|
Shared search |
|
|
Asynchronous search |
|
|
Synchronous and asynchronous estimates |
|
|
Asynchronous shared search |
|
|
Synchronously or asynchronously estimate shared search |
|
|
| Description | MCL 5.0 path | MCL 6.0 path |
|---|---|---|
Synchronously fetch messages from a single channel |
|
|
ID-based retrieval |
|
|
Estimate for single channel messages |
| Not supported: Bulk messages endpoint can be used instead, accepting multiple ids. |
Asynchronous fetch for multiple channels |
|
|
Asynchronous estimate for multiple channels |
|
|
| Description | MCL 5.0 path | MCL 6.0 path |
|---|---|---|
Synchronously fetch comments from a single channel message |
|
|
ID-based retrieval |
|
|
| Description | MCL 5.0 path | MCL 6.0 path |
|---|---|---|
Synchronous search |
|
|
ID-based retrieval |
|
|
Asynchronous search |
|
|
Synchronous and asynchronous estimates |
|
|
| Description | MCL 5.0 path | MCL 6.0 path |
|---|---|---|
Synchronous fetch for single post |
|
|
Synchronous fetch for single comment |
|
|
ID-based retrieval |
|
|
Asynchronous fetch for single post |
| Not supported: Bulk comments endpoint can be used instead, accepting multiple ids. |
Synchronous and asynchronous estimates for single post |
| Not supported: Bulk comments endpoint can be used instead, accepting multiple ids. |
Asynchronous fetch for single comment |
| Not supported: Bulk comments endpoint can be used instead, accepting multiple ids. |
Synchronous and asynchronous estimate for single comment |
| Not supported: Bulk comments endpoint can be used instead, accepting multiple ids. |
| Description | MCL 5.0 path | MCL 6.0 path |
|---|---|---|
Asynchronously fetch comments for multiple posts/comments/channel-messages |
|
|
Asynchronously estimate comments for multiple posts/comments/channel-messages |
|
|
| Description | MCL 5.0 path | MCL 6.0 path |
|---|---|---|
Synchronous search | NA |
|
ID-based retrieval | NA |
|
Shared search | NA |
|
Asynchronous search | NA |
|
Synchronous and asynchronous estimates | NA |
|
Asynchronous shared search | NA |
|
Synchronously or asynchronously estimate shared search | NA |
|
| Description | MCL 5.0 path | MCL 6.0 path |
|---|---|---|
Synchronously fetch updates from a single channel | NA |
|
ID-based retrieval | NA |
|
Asynchronous fetch for multiple channels | NA |
|
Estimate for multiple channels | NA |
|
| Description | MCL 5.0 path | MCL 6.0 path |
|---|---|---|
Fetch a single producer lists |
|
|
Fetch all your producer lists | NA |
|
Fetch information for a single shared search |
|
|
| Description | MCL 5.0 path | MCL 6.0 path |
|---|---|---|
Fetch budgets |
|
|
| Description | MCL 5.0 path | MCL 6.0 path |
|---|---|---|
Fetch type of an ID | NA |
|