Nets

What is a Net?

A Net collects public social media posts from the accounts, hashtags, places or post links you choose, keeps the ones that match a plain-language relevance rule, and fills your own columns for every post and comment.

Each execution of a Net is a Catch: it covers a time window, fetches what was posted in it, and produces one table. Run Catches by hand, on a schedule or over the API, and the Trends view compares them over time. Nets currently work with Instagram.

Beta, enabled on request

Nets are in beta and are enabled per organisation. If you don't see “Nets” in the sidebar, contact the Tavnit team to turn them on.

When to use a Net

  • Tracking complaints about your products: which product, what went wrong and whether you replied
  • Finding businesses that ask for suppliers in a city or under a hashtag
  • Following what people say about a topic: stance, themes and claims

Creating a Net

  1. 1Open “Nets” in the sidebar and click “New Net”.
  2. 2Choose how to start: “Describe it” (write a sentence and the AI drafts the scope, relevance rule and columns), “Start from a template”, “Copy an existing Net” or “Blank Net”.
  3. 3If you described it, review the draft, uncheck anything you don't want, and click “Create Net”. Suggested accounts may not exist, so check them in the Test tab.
  4. 4Otherwise fill in the builder: Basics, Collect, Per post & comment, Per thread, and Media & limits (below), then click “Create Net”.
  5. 5The Net opens on its Test tab. Run a test before your first Catch.

The builder

SectionSettings
BasicsName, and Purpose (what the Net is for; the AI reads it as context).
CollectScope: Accounts, Hashtags, Places (an Instagram location link or id) and Post links, plus Exclude accounts and Exclude hashtags, which are dropped right after fetching, before any AI. Comments: “Collect comments” and “Comments per post”. Relevance rule: which posts count, in plain language.
Per post & commentFields (free values), Yes/No checks (true or false) and Categories (exactly one option, or none), filled for every post and every comment.
Per threadThread questions (yes/no, answered once per post and its comments, such as “Did the brand reply?”) and Thread categories (one option for the whole conversation).
Media & limitsRead post images and Images per post; Transcribe Reel audio and Seconds of audio per Reel; Posts per Catch (max); Settle delay (hours); First Catch looks back (days).
No keyword search

Instagram has no keyword search, so a Net always starts from accounts, hashtags, places or post links. Put your keywords in the relevance rule. Posts that fail the rule are dropped before comments, media or columns are processed.

LimitDefaultRange
Comments per post20Up to 100
Images per post5Up to 20
Seconds of audio per Reel18010 to 600
Posts per Catch (max)500Up to 5,000
Settle delay (hours)480 to 720
First Catch looks back (days)71 to 365

Images are read for text and content (flyers, price lists, damaged products). For Reels only the sound is transcribed; the video itself is never processed, and music-only Reels are skipped. The settle delay makes recent posts wait for a later Catch so their comment thread has time to fill in.

Every row also carries built-in columns, whose names you can't reuse: Platform, Type, Post ID, Comment ID, URL, Author, Posted At, Likes, Comments, Views, Media, Hashtags, Location, Text, Image Text and Transcript. Your columns follow them.

The Test tab

“Run test” fetches a small sample from your scope, shows what is kept, dropped or excluded, and previews the table, before any Catch.

  • The test always uses your current edits, including unsaved ones. Save them when the results look right.
  • Tabs: Kept, Dropped, Excluded and Table preview (the first kept posts with their comments, structured with your columns).
  • “Per Catch (estimate)” projects posts per day, posts per Catch, and rows per Catch. “At least” means the sample hit its cap.
  • “Tune the scope” suggests hashtags or accounts to add or exclude and a revised rule; one click updates the draft, then test again to compare.
  • If you only changed the rule or columns, “Test again” reuses the last sample: no new fetch, only your rule and columns run again.

A fresh sample takes about a minute. Each organisation can run up to 40 tests per 24 hours.

Running a Catch

  1. 1Click “Run Catch”.
  2. 2Pick “Since the last Catch” (picks up where the last Catch ended and stops at the settle delay before now; the first Catch looks back the configured number of days) or “A date range (backfill)” with From and To dates.
  3. 3Click “Start Catch”. The Catch appears under “Catches” with its window, posts kept, rows, status and source (Manual, Scheduled or API).

A backfill doesn't move the resume point, and posts already processed are skipped. Because posts are fetched newest first, reaching far back may need a higher Posts per Catch cap. Only one “since the last Catch” Catch of a Net runs at a time, and an inactive Net can't run.

While it runs, a Catch shows its stage: Fetching posts, Checking relevance, Fetching comments, Reading images and audio, Filling your columns, and Delivering. It ends as completed, failed or cancelled. “Cancel Catch” stops it; nothing is delivered, and the posts can be caught again.

A completed Catch shows new posts, kept posts, comments, rows, images read and audio transcribed. Its table can be filtered to posts or comments, searched, and downloaded as CSV or JSON; each row links to the post (“Open post”) and each value says where it came from (the item's text, the parent post, the Reel's audio, metadata or an image).

Schedule

On the “Schedule” tab, turn on “Run on a schedule” and choose a frequency: every hour, every day, weekdays (Mon–Fri), every week or a custom cron expression. Each scheduled Catch picks up where the last one ended. The tab shows where the next Catch starts. The schedule is paused while the Net is inactive.

Trends

“Trends” appears after the first completed Catches and compares them:

  • Posts kept per Catch, and posts by day in the latest Catch
  • Spikes in the latest Catch, flagged once there are 3 earlier Catches to compare with
  • The biggest changes in your categories, checks, thread questions and thread categories versus the previous Catch
  • Category distribution and Yes/No check results in the latest Catch
  • Top hashtags and top authors

Where the data goes

OutputHow it works
EmailSends each Catch's table as a CSV to the recipients you list.
WebhookPOSTs each Catch's rows as JSON to an https:// URL.
BucketWrites every completed Catch's rows into a Bucket, optionally with a Catch ID column.

API

Copy the ID from “Net ID” and queue a Catch. An empty body runs “since the last Catch”:

bash — queue a Catch
curl -X POST https://run.tavnit.io/api/nets/NET_ID/catch \
  -H "X-API-Key: $TAVNIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'

Send window_start (and optionally window_end, which defaults to now) as ISO timestamps for a backfill:

JSON — backfill body
{
  "window_start": "2026-09-01T00:00:00Z",
  "window_end": "2026-09-15T00:00:00Z"
}

The response (202) carries the catch_id. Check its status, and get the columns and rows once completed, with:

bash — Catch status and output
curl https://run.tavnit.io/api/catches/CATCH_ID \
  -H "X-API-Key: $TAVNIT_API_KEY"

POST /api/catches/CATCH_ID/cancel cancels a queued or running Catch. Errors: 400 for a bad window, 402 when your organization can't start new work right now (contact the Tavnit team), 403 when Nets aren't enabled for your organisation, 409 for an inactive Net or a “since the last Catch” Catch already in progress. See the REST API page for authentication.

Who can do what

ActionRoles
Create, edit and delete NetsOwner, Admin
Run Catches and view resultsOwner, Admin, Member

See User roles.

Limitations

  • Instagram only, and only public posts.
  • No keyword search: collection starts from accounts, hashtags, places or post links.
  • Up to 5,000 posts per Catch.
  • Reel video is never analysed, only its audio; music-only Reels are skipped.
  • If a thread can't be structured, its rows are kept with empty columns and the Catch says how many.

Troubleshooting

SymptomWhat to check
A test returns nothing for an accountThe handle may not exist or may not be public. Check it on Instagram.
Too many irrelevant posts are keptMake the relevance rule more specific, or exclude the accounts and hashtags that bring noise.
“Run Catch” fails with a conflictThe Net is inactive, or a “since the last Catch” Catch is already running.
A backfill misses older postsRaise Posts per Catch (max): posts are fetched newest first.
Recent posts are missingThey are younger than the settle delay and will be picked up by a later Catch.
Tests are refusedYour organisation reached 40 tests in 24 hours. Try again later.