You can fetch comments of a Facebook post or replies to a specific Facebook comment by using the get()
method with the <MCL_ID>/comments
path. This document describes the parameters, and shows how to perform basic queries using the method.
All of the examples in this document are taken from a Researcher Platform use case and assume you have already created a Python or R Jupyter notebook and have created a client object. See Getting started to learn more.
See Data dictionary for detailed information about the fields that are available on a Facebook page node.
Parameter | Type | Description |
---|---|---|
| List | Comma-separated list of fields you want included in the result. See Data dictionary for descriptions of all available fields. |
| String or Integer | Date in YYYY-MM-DD (date only) or UNIX timestamp (translates to a date and time to the second) format. Facebook comments created on or after this date or timestamp are returned (used with UNTIL to define a time range). SINCE and UNTIL are based on UTC time zone, regardless of the local time zone of the user who made the comment.
|
| String or Integer | Date in YYYY-MM-DD (date only) or UNIX timestamp (translates to a date and time to the second) format. Facebook comments created on or after this date or timestamp are returned (used with UNTIL to define a time range). SINCE and UNTIL are based on UTC time zone, regardless of the local time zone of the user who made the comment.
|
| Enum | Sorting mode in which the comments are returned (only for synchronous endpoint). Available options:
Default value: |
| Boolean | Boolean value that allows you to change the way of fetching comments. Available options:
Default value: |
Fetching comments from specific Facebook posts requires that you first obtain post ID by using the get()
method with the appropriate “path” and “params.” The search results will include the ID field by default (you don't have to specify it in your query). See Guide to learn about this method.
The results will include top level comments for a specific post, and not nested comments. In order to get nested comments of a specific post, you can use fetch comments of a Facebook comment or use the fetch_all
parameter.
Meta Content Library IDs can be used in comment queries and displayed in the search results. Meta Content Library IDs are unique IDs linked to an entity in MCL.These IDs cannot be used to search on Meta’s technologies.
To fetch top-level replies on a specific Facebook post, generate a post ID by using the get(path=search/facebook_posts
, ...) method. Then use the query get(path=<post_id>/comments
) method to fetch top-level replies on this post.
The following example would return 10 results per page. You can keep calling query_next_page()
and has_next_page()
to get the next page of 10 results, until all the query results have been returned. In order to fetch all top level replies of a post with a single call, you can follow the instructions for asynchronous fetching
library(reticulate)
client <- import("metacontentlibraryapi")$MetaContentLibraryAPIClient
client$set_default_version(client$LATEST_VERSION)
# Fetch first 10 comments
response <- client$get(path="877107953929200/comments")
jsonlite::fromJSON(response$text, flatten=TRUE)
# Fetch next page
if (client$has_next_page(response)) {
response <- client$query_next_page(response)
jsonlite::fromJSON(response$text, flatten=TRUE) # Display second page
}
To fetch top-level replies on specific Instagram comments, take a comment ID that you obtained from a previous comment fetch call and pass it as a path
param with a /comment
suffix.
The following example would return 10 results per page. You can use the query_next_page() and has_next() to get the next page of 10 results, until all the query results have been returned. In order to fetch all top level replies of a comment with a single call, you can follow the instructions for asynchronous fetching.
library(reticulate)
client <- import("metacontentlibraryapi")$MetaContentLibraryAPIClient
client$set_default_version(client$LATEST_VERSION)
# Fetch first 10 subcomments
response <- client$get(
path="2177675389246626/comments"
)
jsonlite::fromJSON(response$text, flatten=TRUE) # Display first page
# Fetch next page
if (client$has_next_page(response)) {
response <- client$query_next_page(response)
jsonlite::fromJSON(response$text, flatten=TRUE) # Display second page
}
To have the API return specific fields from the Instagram comments, create a comment fetch call, passing the fields parameter as a comma-separated list of fields you want included. If omitted, default fields will be returned.
library(reticulate)
client <- import("metacontentlibraryapi")$MetaContentLibraryAPIClient
client$set_default_version(client$LATEST_VERSION)
# Fetch first 10 comments with specific fields
response <- client$get(
path="877107953929200/comments",
params=list("fields"="text,creation_time")
)
jsonlite::fromJSON(response$text, flatten=TRUE) # Display first page
To have the API return comments within a specific time and date range, create a comment fetch call and pass the since
and until
parameters you want included.
library(reticulate)
client <- import("metacontentlibraryapi")$MetaContentLibraryAPIClient
client$set_default_version(client$LATEST_VERSION)
# Will fetch comments that were created after 2024-04-13,
# but before 1713139200 (epoch timestamp of "2024-04-15 12:00:00 AM)
# Both formats (date and UNIX timestamp) are allowed
response <- client$get(
path="877107953929200/comments",
params=list("since"="2024-04-13", "until"="1713139200")
)
jsonlite::fromJSON(response$text, flatten=TRUE) # Display first page
fetch_all
filterTo have the API return all comments and not just the top level replies, you can use the fetch_all
boolean param by setting it to true. Since the data are returned flattened, no sorting is applied.
library(reticulate)
client <- import("metacontentlibraryapi")$MetaContentLibraryAPIClient
client$set_default_version(client$LATEST_VERSION)
# Fetch ALL comments (paginated)
response <- client$get(
path="877107953929200/comments",
params=list("fetch_all"=TRUE)
)
jsonlite::fromJSON(response$text, flatten=TRUE) # Display first page