How iGrillo Mídias, a Brazilian paid-media agency, uses the Google Ads API to operate the advertising accounts of its contracted clients.
iGrillo Mídias is a paid-media agency. Clients sign a management contract that authorizes us to operate their Google Ads accounts on their behalf, and each account is linked to our manager account (MCC) by the client's own authorization.
Our only source of revenue is the management fee paid by those contracted clients. We do not resell API access, we do not sell or syndicate advertising data, and the software described here is not sold, licensed or distributed to third parties.
Grillo Ads Platform is our internal operations platform. It serves two purposes:
The reporting half is live today and runs entirely on read-only access. The campaign-management half is what requires Basic Access, since it depends on mutate calls.
| User type | Who | What they can do |
|---|---|---|
| Internal — Admin | Agency owner | Full access to every managed account: data collection, reporting and campaign operations |
| Internal — Operator | In-house media team | Run data collection and perform campaign operations on the accounts assigned to them |
Our clients never authenticate into the platform and never interact with the Google Ads API through it. What they receive is the outcome of our work: performance reports produced and delivered by our team, and the campaigns running in their own Google Ads accounts, which they own and can always inspect directly in the Google Ads interface.
Authorization is enforced server-side by role, combined with an explicit account-to-user mapping. Authentication uses password login with optional TOTP two-factor, and every access to client data is written to an audit log.
| Layer | Implementation |
|---|---|
| Application | Next.js (TypeScript), server-side rendering, role-gated routes |
| Data store | PostgreSQL 16 — one row per account per day, and one row per keyword per day |
| Collector | TypeScript service calling the Google Ads API REST endpoint googleAds:search, scheduled once daily and on manual refresh |
| Hosting | Dedicated cloud virtual machine, containerized, TLS via Let's Encrypt |
| Credentials | OAuth2 refresh token and developer token stored as server-side environment variables — never exposed to the browser or to client users |
All reads go through a single function that issues one googleAds:search request per account per report.
| Resource | Purpose |
|---|---|
customer | Daily account totals: clicks, impressions, CTR, conversions, cost |
keyword_view | Per-keyword performance, stored daily for trend analysis |
account_budget | Prepaid balance monitoring, to alert the team before an account runs dry |
customer_client | Enumerate the accounts linked to the manager account |
A representative query:
SELECT segments.date, metrics.clicks, metrics.impressions, metrics.ctr,
metrics.conversions, metrics.cost_micros
FROM customer
WHERE segments.date BETWEEN '2026-07-25' AND '2026-07-31'
Request volume is small and bounded: a handful of requests per managed account per day, executed in a single scheduled batch, plus occasional on-demand refreshes triggered by an operator. Results are cached in PostgreSQL, so the dashboard never queries the API on page load.
iGrillo Mídias — paid-media agency, registered in Brazil under CNPJ 33.703.618/0001-77, based in Ribeirão Preto, São Paulo, Brazil.
API contact e-mail: contato@igorgrillo.com.br
Company website: igorgrillo.com.br
Manager account (MCC): 933-713-3172
Our privacy policy and terms of use, including the Limited Use disclosure required by the Google API Services User Data Policy, are published at igorgrillo.com.br/privacy and igorgrillo.com.br/terms.