
Use the owner’s records first when they contain the dates and counts you need. For a small list, you can prepare the spreadsheet by hand. If you need current public counts for known post URLs, the documented Instagram Metrics Scraper input fits that collection step. You still build the monthly list, check the returned rows, and prepare the report.
The reader question asks how to export posts from a given month. That wording leaves two decisions to make: which posts belong in the file, and when their counts were observed. Keep those decisions separate throughout the method.
1. Define the month and the count time
Write the publication month, year, and time zone before you select posts. The publication time is when the post was published. The observation time is when you collected its counts.
Use the first instant of the month as the start. Use the first instant of the next month as the end. Include the start and exclude the end. This rule prevents a post at the next month’s start from entering both reports.
Choose which question the spreadsheet must answer:
- What are the current public counts for posts published in the selected month?
- How much activity occurred during the selected month?
This method answers the first question. A post published in September can have counts collected on October 25. The September publication date selects the post. The October observation time describes the counts.
If the request means activity during September, change the evidence request before you collect current counts. A current count cannot establish what the count was on September 30. Do not rename an October observation as a September month-end reading.
Also define the account and the source list. A report for a limited list must say so. A suitable report title is “Current observations of known September posts.” Add the year and the actual observation date in your own report.
2. Build a checked post list
A roster is the list of posts you intend to include. Start with the owner’s checked publication register or an existing export. A publication register records which posts were published and when.
Check whether that source covers the requested account and month. Keep a note about its coverage. Coverage means how much of the requested post list the source supports. Do not assume that an export contains every post because it has many rows.
If no owner list is available, prepare a limited list of known public post URLs by hand. Label it as a limited list. Do not promise all monthly account posts from that evidence.
For each candidate post, save its requested URL and the publication evidence. Use a stable post ID when you have one. A post ID identifies one content item. A URL is its web address.
Keep these decisions visible:
| Publication evidence | Monthly decision | Required action |
|---|---|---|
| Checked time inside the month | Include | Keep the post in the monthly roster |
| Checked time outside the month | Exclude | Retain the reason in the selection record |
| Publication time unknown | Review | Keep the candidate unresolved |
| Publication sources conflict | Review | Check the conflict before assigning membership |
Do not use the day you found a post as its publication date. Do not treat an unknown date as proof that the post falls outside the month.
Use one row per content item. If two URLs resolve to the same checked post ID, keep the requested URLs in your source record and report the post once. Matching captions alone do not prove that two rows are the same post.
The guide to a checked Instagram posting inventory explains the related date and coverage boundary. For this report, use the checked identities and dates. You do not need its format or posting-rate analysis.
3. Check one known public URL
An Actor is a hosted program that collects data. The Instagram Metrics Scraper documents direct collection from known public content URLs. Its checked public input accepts `mode` set to `contentUrls`, a list in `startUrls`, and an optional total row cap in `maxItems`.
A cap is a maximum, not a promised result count. The documented input also supports profile discovery. This method uses your checked content list. It does not rely on profile discovery to establish a complete monthly history. See the public build contract, checked October 25, 2026; documented input and output only.
Use this supplied small input for the first check:
{"maxItems":1,"mode":"contentUrls","startUrls":["https://www.instagram.com/reel/DIwcCZgxVZP/"]}Before you run it:
- Replace the sample URL with one known public post or Reel URL from your list. A Reel is an Instagram video post.
- Keep `mode` set to `contentUrls`.
- Keep `maxItems` set to `1` for this one-item check.
- Compare the returned identity, date, counts, and states with the requested post.
The supplied input has a valid documented shape. No run was made for this guide. The sample URL is not evidence for your monthly report.
For a larger checked roster, replace the sample list with your intended URLs. Choose a cap large enough for those items. Then match every requested post to the returned data. A larger cap does not guarantee that every post will have usable counts.
The public Instagram Brand Campaign Metrics Task, checked October 25, 2026; page presence only is a possible starting page. A Task is a saved input preset. Its saved settings were not checked through an authenticated account, and it was not run. Check the input yourself before use.
4. Keep the fields that explain each count
Keep the count fields and the evidence needed to read them. The documented output includes the following fields. Their presence in the contract does not mean every returned row will contain every value.
| Field | Why you keep it |
|---|---|
| `inputUrl` | Matches a returned row to the URL you requested |
| `postId` | Identifies the content item when available |
| `postUrl` | Keeps the returned public post address |
| `publishedAt` | Records the available publication time |
| `likes` | Holds the available public like count |
| `comments` | Holds the available public comment count |
| `postMetricStatus` | Describes each public count’s state and precision |
| `status` | Records the returned row state |
| `statusReason` | Preserves the stated reason for that state |
| `scrapedAt` | Records when the returned row was collected |
Precision describes how exact a count is. The documented `postMetricStatus` can distinguish exact, rounded, unavailable, and unknown precision. It also records whether a metric is present, unavailable, or not attempted.
Read the likes and comments entries separately. A row can have a usable value for one count and a gap for the other. A returned row is therefore not enough to prove that both counts are usable.
Keep missing counts empty. Enter zero only when the source actually provides zero. An empty cell means you do not have that value. Zero means the observed count is zero.
Keep rounded values identified as rounded. Do not present a total from rounded values as exact. If you need an exact-only total, select rows with documented exact precision and state that rule.
Add your own report columns for the publication-month decision, publication evidence, and coverage note. These are checks you perform. Do not describe them as analysis produced by the Actor.
Public likes and comments are counts, not a count of unique people. This method does not provide private reach, saves, shares, or a paid-versus-organic split. Organic means activity not attributed to paid advertising. If the request needs owner-only records, ask for the appropriate owner source instead of filling those columns from public counts.
5. Match every requested post to the output
Reconciliation means matching your requested list to the returned rows. Start from the roster so that a missing result remains visible.
For every requested post:
- Look for a matching `inputUrl`, checked `postId`, or returned `postUrl`.
- Read `status` and `statusReason` when a row exists.
- Confirm the publication-month decision from the checked evidence.
- Inspect likes and comments separately, including their metric states.
- Retain the actual `scrapedAt` value.
- Keep a report row even if no usable counts were returned.
If a post has no returned row, preserve its requested identity from the roster. Do not invent an Actor status or collection timestamp. Record that the result was absent in your own report note.
| Condition | Treatment in the spreadsheet |
|---|---|
| Likes and comments are usable | Keep both values and their quality evidence |
| Likes are usable and comments are missing | Keep likes; leave comments empty |
| Counts are unavailable | Keep the post row and the stated reason |
| No matching row was returned | Keep the requested post and mark the missing result |
| Publication date remains unknown | Keep the candidate under review |
| Duplicate identity or conflicting results | Resolve the match before counting the post |
A cap that is too small can leave requested items unprocessed. A cap that is large enough still does not prove that all counts were available. Read the returned evidence rather than treating the number of output rows as proof of success.
Preserve the source rows when you resolve a conflict. Your delivered file should have one count row per post, with enough evidence to explain each decision.
6. Export and inspect the spreadsheet
Export the selected columns to CSV or use the platform’s spreadsheet export. CSV means comma-separated values. It is a text file that stores data in rows and columns.
Import post IDs as text. They identify posts; they are not quantities for calculation. Keep timestamps with their time zone. Do not discard the zone when you format the date cells.
Check the imported file before you calculate:
- Inspect the first and last rows for column alignment.
- Compare every requested identity with the delivered rows.
- Confirm that unavailable posts remain present.
- Check that empty count cells did not become zero.
- Check that IDs remain text and timestamps remain readable.
- Confirm that metric-quality information survived the export.
If `postMetricStatus` is difficult to read in one spreadsheet cell, make separate likes and comments quality columns. Copy the documented state and precision into them. Keep the source values available so another reader can check your summary.
Define which rows can enter each calculation. These are eligible rows. The denominator is the number you divide by when you calculate a mean. A mean is the total divided by the eligible row count.
Report the number of posts with usable likes separately from the number with usable comments. If the two counts differ, their means need different denominators. If no rows qualify, report the result as unavailable rather than zero.
7. Worked example: original fiction
This example is original fiction. P1, P2, and P3 are invented reader records. They are not Actor output.
The fictional roster contains three checked September posts. Their counts were observed on October 25. The example does not supply individual publication timestamps, an observation clock time, a time zone, or metric-precision records. It teaches missing-row handling and arithmetic. It is not a fully accepted production file.
| Post | Publication membership | Observation date | Likes | Comments | Count state |
|---|---|---|---|---|---|
| P1 | Checked September post | October 25 | 100 | 10 | Usable |
| P2 | Checked September post | October 25 | 200 | 20 | Usable |
| P3 | Checked September post | October 25 | `""` | `""` | Unavailable |
Keep all three rows in the delivered CSV. The empty cells for P3 mean unavailable counts. They do not mean zero likes or zero comments.
The calculations for these fictional usable rows are:
- Usable likes coverage: 2 posts out of 3 requested posts.
- Observed likes total: 100 likes + 200 likes = 300 likes across 2 usable posts.
- Mean observed likes: 300 likes / 2 usable posts = 150 likes per usable post.
- Usable comments coverage: 2 posts out of 3 requested posts.
- Observed comments total: 10 comments + 20 comments = 30 comments across 2 usable posts.
- Mean observed comments: 30 comments / 2 usable posts = 15 comments per usable post.
A suitable report note is: “The two usable rows contain 300 observed likes and 30 observed comments on October 25. The three-post roster includes one unavailable row.”
Do not describe 300 as all September likes. It excludes P3’s unknown value. It also describes an October observation of September publications. Do not call it a September month-end total.
Do not divide 300 by 3 to report a three-post mean. That calculation would treat the missing count as zero. The supported mean uses the two usable rows only.
8. Accept the report with its limits
Accept the file when each included post has a checked identity, a publication-month decision, a known observation time for returned counts, and a clear count state. Keep unresolved candidates visible until their membership can be checked.
Your report note must name the source list and its coverage. It must also state the count observation time, the usable-row count for each metric, and the rule used for totals or means. Do not describe a partial known-post list as complete account history.
If the request changes to month-boundary activity, use different evidence. The guide to saved month-boundary observations explains that separate requirement. A publication-month label cannot turn current counts into historical readings.
This is a proposed workflow based on checked public documentation. The supplied evidence includes no paid run or measured reliability result. It supports the documented collection fit, not a claim that the Actor completes or validates the report for you.
Sources & further reading
- Reader question about exporting posts from a given month — published February 3, 2025; retrieved October 25, 2026; one public question, no authenticated read
- Instagram Metrics Scraper public build 1.0.35 and README — checked October 25, 2026; static input and output documentation, no runtime result
- Instagram Brand Campaign Metrics Task — checked October 25, 2026; public page presence only, saved settings not authenticated and Task not run
By Chronometrica · Updated
Back to top ↑
