# Best Practices

## Recommended setup

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th></th></tr></thead><tbody><tr><td><strong>Monitor 5–10 key accounts per flow</strong></td><td>Instead of adding 30+ profiles to one data flow, split them into smaller groups. This reduces API pressure and makes troubleshooting easier if one account has issues.</td></tr><tr><td><strong>Use separate flows for info vs. posts</strong></td><td>Create one data flow for "Public profiles info" (lightweight, quick) and another for "Public profiles posts" (heavier, more data). Schedule them at different times to avoid rate limits.</td></tr><tr><td><strong>Append data from multiple accounts</strong></td><td>If tracking competitors, use Coupler.io's Append transformation to combine "Public profiles info" from all accounts into a single table for easy comparison and charting.</td></tr></tbody></table>

## Data refresh and scheduling

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th></th></tr></thead><tbody><tr><td><strong>Start with daily refreshes</strong></td><td>Once your first manual run succeeds, schedule the data flow to run daily. This balances freshness with API rate limit risk. If you need real-time data, move to every 6 hours after validating stability.</td></tr><tr><td><strong>Schedule refreshes during off-peak hours</strong></td><td>Run data flows early morning (6–8 AM) or late evening (8–10 PM) when Instagram API traffic is typically lower, reducing the risk of rate limit errors.</td></tr><tr><td><strong>Stagger runs for large account lists</strong></td><td>If you're monitoring many profiles, schedule "Public profiles info" at 6 AM and "Public profiles posts" at 6 PM. This spreads API load and keeps data fresh without hitting rate limits.</td></tr></tbody></table>

## Performance optimization

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th></th></tr></thead><tbody><tr><td><strong>Archive old snapshots monthly</strong></td><td>Instagram Public Data provides point-in-time snapshots. Move old data to an "Archive" sheet or table monthly so your active sheet stays lean and fast for analysis.</td></tr><tr><td><strong>Use filters in your destination</strong></td><td>After data lands in Google Sheets or BigQuery, apply filters or views to focus on high-engagement posts or specific date ranges. This keeps your dashboard fast and readable.</td></tr></tbody></table>

## Common pitfalls

{% columns %}
{% column %}
**Do**

* Test with a single profile first before adding 10+ accounts
* Re-authenticate if connection errors persist
* Schedule runs during low-traffic hours to avoid rate limits
* Keep usernames spelled exactly as they appear on Instagram
  {% endcolumn %}

{% column %}
**Don't**

* Monitor private accounts (no data is available)
* Set up hourly refreshes for 20+ accounts (you'll hit rate limits)
* Assume "Public profiles posts" includes Stories or Reels (it doesn't)
* Use profile URLs instead of usernames in the profiles field
  {% endcolumn %}
  {% endcolumns %}

{% hint style="danger" %}
**Beware of API rate limits**: If your data flow fails with a 400 or 429 error, Instagram's API is throttling your requests. Reduce the number of profiles, increase the time between runs, or split flows. Retrying immediately will not help—wait at least 1 hour before the next attempt.
{% endhint %}
