Skip to Content
Tool referenceGet delivery estimate

Get delivery estimate (adsap_get_delivery_estimate)

Platform: Meta · Read or write: Read · Plan: All plans · Consumes a task: No · Preview supported: No

What it does

Asks Meta for a delivery estimate for a proposed audience and optimization goal. It returns a monthly audience size range and an audience size label on a five-step scale from too_narrow to very_broad. It sizes detailed targeting groups and demographics the same way adsap_create_ad_sets creates them. Meta no longer includes daily reach or outcome curves in these estimates. Use it to sanity-check targeting before you build an ad set.

When to use it

  • Use it before you build an ad set, to check whether the audience is too small or too wide for the goal.
  • targeting_spec needs at least one country code. Detailed targeting IDs come from adsap_search_detailed_targeting.
  • Detailed targeting goes in targeting_spec.flexible_spec, the same groups adsap_create_ad_sets takes: or inside a group, and between groups. Pass exactly the targeting you plan to create, so the number matches the ad set.
  • Meta combines the separate interests and behaviors lists with and, so an audience built from both is smaller than either list alone.
  • A conversion goal needs a promoted_object, for example a pixel ID and an event. daily_budget is in cents.
  • Meta has removed the daily reach figure and the outcome curve from its estimates. estimate_dau comes back as 0 and daily_outcomes_curve comes back empty, with a note in dau_curve_note.
  • Size the audience from estimate_mau_lower, estimate_mau_upper and audience_size_assessment.

Worked example

You ask

“How many people in France like cooking or travel often, and are parents? Check it on act_1234567890 before we build the ad set.”

The assistant calls adsap_get_delivery_estimate

{ "ad_account_id": "act_1234567890", "targeting_spec": { "countries": ["FR"], "flexible_spec": [ { "interests": [ { "id": "6003659420716", "name": "Cooking (food & drink)" } ], "behaviors": [ { "id": "6002714895372", "name": "Frequent Travelers" } ] }, { "family_statuses": [ { "id": "6002714398372", "name": "Parents (All)" } ] } ] }, "optimization_goal": "LINK_CLICKS" }

Adsap returns

The field names are the ones Adsap returns. The values are examples.

{ "ad_account_id": "act_1234567890", "optimization_goal": "LINK_CLICKS", "targeting_summary": "Countries: FR. Detailed targeting: (Cooking (food & drink) or Frequent Travelers) and Parents (All)", "estimate_dau": 0, "estimate_mau_lower": 5900000, "estimate_mau_upper": 6900000, "daily_outcomes_curve": [], "delivery_curve_available": false, "dau_unavailable": true, "dau_curve_note": "Meta removed estimate_dau and daily_outcomes_curve from delivery estimates (v26, all versions from 2026-10-27). Use estimate_mau_lower / estimate_mau_upper + audience_size_assessment for sizing guidance.", "audience_size_assessment": "broad" }

How to read it

targeting_summary states the logic in words: people who like cooking or travel often, and are parents. estimate_mau_lower and estimate_mau_upper are Meta’s range of monthly active people who match the targeting. audience_size_assessment labels the midpoint of that range. Under 10,000 is too_narrow, under 100,000 is narrow, under 1 million is moderate, under 10 million is broad, and anything above is very_broad. Here 6.4 million people is broad.

Each extra group narrows the audience, and each extra item inside a group widens it. delivery_curve_available is false and dau_unavailable is true because Meta no longer sends those figures. The payload also carries a human_readable_summary sentence. If the label is too_narrow, widen the targeting and run the estimate again.

Parameters

Descriptions are shortened from the tool schema. Your assistant sees the full text.

NameTypeRequiredDescription
ad_account_idstringYesMust include act_ prefix.
targeting_specobjectYesTargeting specification. Must include at least countries. Detailed targeting and demographics go in flexible_spec groups (a top-level demographic key is rejected).
targeting_spec.countriesarray of stringYesISO 3166-1 alpha-2 codes (e.g. [‘FR’, ‘DE’]).
targeting_spec.age_minnumberNo
targeting_spec.age_maxnumberNo
targeting_spec.gendersarray of numberNo[0]=all, [1]=male, [2]=female.
targeting_spec.interestsarray of objectNo
targeting_spec.behaviorsarray of objectNo
targeting_spec.localesarray of numberNo
targeting_spec.flexible_specarray of objectNoDetailed targeting groups, the same shape adsap_create_ad_sets takes: OR inside a group, AND between groups. [{“interests”:[A],“behaviors”:[B]},{“family_statuses”:[C]}] sizes people who match (A or B) and C. Group keys are Meta segment types: take each item’s type and id from adsap_search_detailed_targeting.
optimization_goalone of OFFSITE_CONVERSIONS, LINK_CLICKS, IMPRESSIONS, REACH, LANDING_PAGE_VIEWS, LEAD_GENERATION, VALUE, APP_INSTALLSYesOptimization goal for the estimate.
daily_budgetnumberNoDaily budget in cents. If provided, estimates are budget-constrained.
promoted_objectobjectNoRequired for conversion goals. E.g. { pixel_id: ‘123’, custom_event_type: ‘Purchase’ }.
promoted_object.pixel_idstringNo
promoted_object.custom_event_typestringNo
promoted_object.page_idstringNo
promoted_object.application_idstringNo
promoted_object.object_store_urlstringNo

Example prompts

  • “How large is the audience of women 25 to 44 in France, optimizing for purchases?”
  • “How many people in France like cooking or travel often, and are parents?”
  • “Is this targeting broad enough before I build the ad set?”

Notes

Conversion goals need a promoted object, such as a pixel and an event. The targeting must include at least one country. Demographics such as parents or job titles go inside a flexible_spec group, never at the top level of targeting_spec.

Guide

Read Audiences and targeting for the workflow around this tool, and the Tool reference for every tool.

The Meta Ads MCP server  page shows how to connect Meta Ads to Claude, ChatGPT or Perplexity.

Last updated on