Google Search Negative Keyword Preflight avatar

Google Search Negative Keyword Preflight

Pricing

$0.25 / completed report

Go to Apify Store
Google Search Negative Keyword Preflight

Google Search Negative Keyword Preflight

Check supplied Search queries against account, campaign, ad-group and attached shared-list negatives. Literal conflict evidence, explicit coverage gaps, CSV and HTML reports.

Pricing

$0.25 / completed report

Rating

0.0

(0)

Developer

Gilad Ronen

Gilad Ronen

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

What does Negative Keyword Preflight do?

Check desired Search queries against supplied Google Ads negative keywords before reviewing an exclusion batch. This Actor returns literal query/negative conflict pairs with match rules, scope evidence and original source references. It accepts JSON or CSV exports for one account and produces a full JSON report, a flat review CSV and a downloadable HTML report.

Use the API tab to connect your own export pipeline, or schedule a task with updated input. The Actor processes supplied data only: it does not access Google Ads, change campaigns, remove negatives, estimate lost revenue or recommend bids.

Why use a negative keyword preflight?

A term can conflict in one campaign and be irrelevant in another. This report keeps account, campaign, ad-group and explicitly attached shared-list scope visible. Reviewers can trace a finding back to the precise query and negative source records. Query result rows also show how many pairs were checked, excluded by supplied scope or left unresolved.

No conflict means only that no supported literal conflict was found. A supplied positive keyword may be used as a test string, but a conflict with that string does not establish that all traffic for the positive keyword is blocked.

How to use it

  1. Export desired test queries and negatives from a single account. Assign unique string IDs to rows.
  2. Supply accountId and either JSON rows or CSV text for each table. Keep IDs such as 001 as strings.
  3. Include scope identifiers and explicit sharedListAttachments for shared lists.
  4. Run the Actor and review both conflict and review rows. Check coverage before drawing conclusions.
  5. Download review.csv, report.html or the complete JSON. Verify original account settings before making your own changes.

Input

See the Input tab for full options and examples/input.json for a synthetic example with all three match types, accents, shared lists, a cross-campaign non-conflict and unsupported syntax.

FieldMeaning
accountIdRequired string; every supplied record belongs to this single account
queriesArray of {id, query, campaignId?, adGroupId?, campaignType?}; campaign type defaults to search
negativesArray of {id, text, matchType, scope, campaignId?, adGroupId?, listId?}
sharedListAttachmentsArray of {listId, campaignId} in the supplied account
queriesCsv, negativesCsvCSV text instead of the corresponding JSON array
queryColumns, negativeColumnsCanonical field to exact CSV header, such as {"id":"Query ID","query":"Search term"}
delimiterComma, semicolon or tab for CSV; comma is the default
maxConflictPairsMaximum reported conflict pairs, 1–5,000; default 5,000

CSV accepts BOM, quoted fields, escaped quotes and multiline quoted values. Duplicate or padded headers, irregular records, duplicate IDs, numeric IDs and missing required fields are rejected. A source reference gives a one-based data record ordinal, not a physical CSV line number. With an explicit map, unmapped export columns are ignored. Without a map, only canonical headers are accepted. Supply match type separately; do not wrap negative text in quotes or brackets to encode match type.

Scope values are account, campaign, adGroup and sharedList. Account scope must have no narrower identifiers. Campaign scope needs only campaignId; ad-group scope needs campaignId and adGroupId; shared-list scope needs only listId. Missing or contradictory scope and unknown values produce review conditions. Missing query scope can make applicability unresolved.

The supplied attachment table defines the mapping tested by this report. If a list has attachments, other campaigns are outside that supplied mapping. Omitted live account attachments remain unverified. A shared list without any supplied attachment is unresolved, never global. Use separate runs for different accounts.

Matching and coverage

The supported subset follows Google's Search negative-keyword rules, checked September 29, 2026. Broad matching requires every distinct literal negative term; phrase matching requires a contiguous token sequence; exact matching requires the whole token sequence. Casing is ignored, accents are preserved, and periods in negative text are ignored. A standalone ampersand remains distinct from the word “and”. Shared lists apply through campaign attachments.

The engine uses Unicode NFC, default Unicode lowercasing and whitespace tokenization. Locale-specific casing and language segmentation are not simulated. Repeated terms are supported in phrase and exact matching; repeated broad-negative terms are review-only because this checker does not infer their multiplicity behavior. Plurals and synonyms are not expanded.

Every report has overall coverage: "partial". Google documents misspelling handling, which this literal engine does not simulate. Unsupported punctuation, asterisks, plus/minus syntax, search operators, match-type wrappers, queries over 16 words, and non-Search campaign types receive review or unsupported coverage. Negative periods are the one supported punctuation normalization; query punctuation remains review-only. supported-literal means the stated local rule was testable, not that Google matching is fully covered. Unknown scope is never treated as global.

Output

One dataset item contains the summary, supplied input, limitations, fingerprints and a rows array. The rows contain conflict pairs, query summaries and review findings. For example:

{
"kind": "conflict",
"queryId": "q002",
"negativeId": "n003",
"rule": "negative-exact",
"scope": "adGroup",
"coverage": "supported-literal",
"matchedPositions": [1, 2]
}
Evidence fieldPurpose
rowId, queryId, negativeIdStable finding and supplied record identifiers
querySource, negativeSourceOriginal table record references
rule, scope, scopeReasonWhy the literal pair matched within the supplied scope
severity, reason, coverageReview meaning and coverage limits
matchedPositionsOne-based query token positions, in negative-term order
checkedPairs, outOfScopePairs, unresolvedPairsCounts on query-result rows

The dedicated review.csv is flat and includes account identity, conflicts, query summaries and review rows. Formula-like cells are prefixed with an apostrophe for spreadsheet safety. The standalone HTML escapes supplied text and uses no external scripts or assets. Download it using the output link and open it locally. The full JSON is stored as OUTPUT. Apify also offers dataset downloads in JSON, HTML, CSV or Excel; use the dedicated CSV for the flat evidence layout.

Price and delivery

The price is USD $0.25 per completed report, including platform usage, with one report-completed event and no startup or dataset-item fee. New runs are billable again, even with identical input. Cloud execution refuses an unexpected report price or other positive-priced events. Invalid input, insufficient budget and exceeded report bounds stop before report publication or billing.

The complete dataset item is the primary deliverable. It is written before the report charge is confirmed; convenience downloads follow. If exports are interrupted after that point, a failed run may still have a usable charged dataset report. Resurrect the same run with unchanged input to regenerate exports without another report charge. Recovery verifies saved input and report integrity, rejects missing or modified datasets, and does not overwrite conflicting saved reports. This is recovery logic, not a transaction spanning Apify storage and billing; inspect ambiguous platform failures before retrying. Starting a fresh run incurs a new fee.

Capacity and privacy

Each run accepts at most 1,000 queries, 2,000 negatives, 2,000 explicit list attachments and 4 MB of total JSON input. Text is limited to 512 characters and IDs to 128. Conflict output is capped at 5,000 pairs, with full JSON below 8 MB and each download below 9 MB. A bound failure stops the report rather than silently truncating it. Split large batches while preserving each query's relevant negatives and attachments.

Input and reports are stored under the run's Apify retention and access settings. Supply only data you are authorized to process; the Actor sends it to no external model or advertising service. It does not independently establish that an export is complete or current. Ask product questions through the Issues tab and include a minimal synthetic example instead of confidential campaign terms.