# Google Ads Audience Segments

*Published:* 2026-10-04
*Author:* Julian Barkat

Every Google Ads Audience Segment, in One Searchable List
=========================================================

Google Ads audience segments are the predefined groups of people you can target or observe in your campaigns: affinity (interests and habits), in-market (people researching a purchase), life events (moving, getting married, retiring) and detailed demographics (long-term facts like homeownership). Search the full list below, or filter to the financial services segments credit unions and community banks use most.

One catch for lenders: in the US and Canada, Google doesn’t allow credit and other consumer finance ads to target by age, gender, parental status, marital status or ZIP code. You can still layer these segments onto loan campaigns. Just leave those demographics out, and run targeting questions past your compliance team.


Loading the segment catalog…

 

  Search segments  

  Financial services related  Available everywhere  Expand all Collapse all 

 






#e2a-ax {
  --ax-line: color-mix(in srgb, currentColor 16%, transparent);
  --ax-soft: color-mix(in srgb, currentColor 5%, transparent);
  --ax-muted: color-mix(in srgb, currentColor 64%, transparent);
  --ax-focus: #2f6fb4;
  --ax-type: #8a8a8a;
  font: inherit;
  color: inherit;
  max-width: 100%;
  margin: 1.5em 0;
}
#e2a-ax *, #e2a-ax *::before, #e2a-ax *::after { box-sizing: border-box; }
#e2a-ax [hidden] { display: none !important; }
#e2a-ax [data-type="AFFINITY"] { --ax-type: #b4507a; }
#e2a-ax [data-type="IN_MARKET"] { --ax-type: #2b8270; }
#e2a-ax [data-type="LIFE_EVENT"] { --ax-type: #c17716; }
#e2a-ax [data-type="DETAILED_DEMOGRAPHIC"] { --ax-type: #3c6db3; }

#e2a-ax .ax-title { margin: 0 0 .25em; font-size: 1.6em; line-height: 1.2; }
#e2a-ax .ax-title:empty { display: none; }
#e2a-ax .ax-meta { margin: 0 0 1.25em; color: var(--ax-muted); }

#e2a-ax .ax-sr {
  position: absolute; width: 1px; height: 1px; overflow: hidden;
  clip: rect(0 0 0 0); white-space: nowrap;
}
#e2a-ax .ax-search { display: block; position: relative; margin: 0 0 .9em; }
#e2a-ax .ax-search input {
  width: 100%; margin: 0; padding: .7em .9em;
  font: inherit; font-size: max(1rem, 16px); color: inherit;
  background: transparent; border: 1px solid var(--ax-line);
  border-radius: 8px; box-shadow: none;
}

#e2a-ax button, #e2a-ax input[type="checkbox"] { font: inherit; }
#e2a-ax button {
  margin: 0; color: inherit; background: transparent; cursor: pointer;
  text-transform: none; letter-spacing: normal; box-shadow: none;
  line-height: 1.3; text-decoration: none;
}
#e2a-ax :focus-visible { outline: 2px solid var(--ax-focus); outline-offset: 2px; }

#e2a-ax .ax-chips { display: flex; flex-wrap: wrap; gap: .5em; margin: 0 0 .9em; }
#e2a-ax .ax-chip {
  display: inline-flex; align-items: center; gap: .5em;
  padding: .4em .85em; font-size: .92em;
  border: 1px solid var(--ax-line); border-radius: 999px;
}
#e2a-ax .ax-chip::before {
  content: ""; width: .6em; height: .6em; border-radius: 50%;
  background: var(--ax-type);
}
#e2a-ax .ax-chip[aria-pressed="true"] {
  border-color: var(--ax-type);
  background: color-mix(in srgb, var(--ax-type) 14%, transparent);
}
#e2a-ax .ax-chip .ax-n { color: var(--ax-muted); font-variant-numeric: tabular-nums; }

#e2a-ax .ax-toggles {
  display: flex; flex-wrap: wrap; align-items: center; gap: .6em 1.25em;
  margin: 0 0 1em; font-size: .92em;
}
#e2a-ax .ax-toggles label { display: inline-flex; align-items: center; gap: .45em; margin: 0; cursor: pointer; }
#e2a-ax .ax-toggles input { margin: 0; accent-color: var(--ax-focus); }
#e2a-ax .ax-spacer { flex: 1; }
#e2a-ax .ax-btn {
  padding: .35em .8em; border: 1px solid var(--ax-line); border-radius: 6px;
}
#e2a-ax .ax-btn:disabled { opacity: .45; cursor: default; }

#e2a-ax .ax-status { margin: 0 0 .5em; font-size: .9em; color: var(--ax-muted); }
#e2a-ax .ax-warn {
  margin: 0 0 1em; padding: .7em .9em; font-size: .92em;
  border-left: 3px solid #c17716; background: var(--ax-soft);
}

#e2a-ax .ax-tree { border-top: 1px solid var(--ax-line); }
#e2a-ax .ax-row {
  display: flex; flex-wrap: wrap; align-items: center; gap: .25em .6em;
  min-height: 2.5em;
  padding: .3em .6em .3em calc(.5em + var(--d, 0) * 1.4em);
  border-bottom: 1px solid var(--ax-soft);
  box-shadow: inset 4px 0 0 var(--ax-type);
}
#e2a-ax .ax-row.ax-root { font-weight: 600; background: var(--ax-soft); }
#e2a-ax .ax-row.ax-context .ax-name { color: var(--ax-muted); }

#e2a-ax .ax-tog, #e2a-ax .ax-tog-gap {
  flex: none; width: 1.75em; height: 1.75em; padding: 0; border: 0;
  display: inline-grid; place-items: center; border-radius: 4px;
}
#e2a-ax .ax-tog::before {
  content: ""; width: .45em; height: .45em;
  border-right: 2px solid currentColor; border-bottom: 2px solid currentColor;
  transform: rotate(-45deg); transition: transform .15s ease;
}
#e2a-ax .ax-tog[aria-expanded="true"]::before { transform: rotate(45deg); }
#e2a-ax .ax-tog:hover { background: var(--ax-soft); }

#e2a-ax .ax-name { flex: 1 1 12em; min-width: 0; overflow-wrap: anywhere; }
#e2a-ax .ax-name mark {
  color: inherit; padding: 0;
  background: color-mix(in srgb, var(--ax-type) 26%, transparent);
}
#e2a-ax .ax-count { color: var(--ax-muted); font-weight: 400; font-variant-numeric: tabular-nums; }
#e2a-ax .ax-tags { display: inline-flex; flex-wrap: wrap; align-items: center; gap: .4em; margin-left: auto; }
#e2a-ax .ax-badge {
  font-size: .78em; padding: .1em .5em; border-radius: 4px;
  border: 1px solid var(--ax-line); color: var(--ax-muted); white-space: nowrap;
}
#e2a-ax .ax-id {
  font-size: .8em; padding: .15em .5em; border-radius: 4px;
  border: 1px solid var(--ax-line); color: var(--ax-muted);
  font-variant-numeric: tabular-nums; white-space: nowrap;
}
#e2a-ax .ax-id:hover { color: inherit; border-color: currentColor; }
#e2a-ax .ax-more { padding: 1em .6em; color: var(--ax-muted); font-size: .92em; }

@media (prefers-reduced-motion: reduce) {
  #e2a-ax .ax-tog::before { transition: none; }
}

(function () {
  /* ============================ CONFIG ============================ */
  var CONFIG = {
    title: 'Google Ads audience segments',   // '' hides the heading
    // One entry per tab: File > Share > Publish to web > [tab] > CSV
    sources: [
      { label: 'User interest',        url: 'https://docs.google.com/spreadsheets/d/e/2PACX-1vQ5I_AujwIUWH7CGvFQyJQHe9eN7Dcbqv2rYchufb830PSAkkFGafYX53l-hrgB-vVrw1dvdmaw6XQ7/pub?gid=244047233&single=true&output=csv' },
      { label: 'Life event',           url: 'https://docs.google.com/spreadsheets/d/e/2PACX-1vQ5I_AujwIUWH7CGvFQyJQHe9eN7Dcbqv2rYchufb830PSAkkFGafYX53l-hrgB-vVrw1dvdmaw6XQ7/pub?gid=19627711&single=true&output=csv' },
      { label: 'Detailed demographic', url: 'https://docs.google.com/spreadsheets/d/e/2PACX-1vQ5I_AujwIUWH7CGvFQyJQHe9eN7Dcbqv2rYchufb830PSAkkFGafYX53l-hrgB-vVrw1dvdmaw6XQ7/pub?gid=1403952185&single=true&output=csv' }
    ],
    runLogUrl: 'https://docs.google.com/spreadsheets/d/e/2PACX-1vQ5I_AujwIUWH7CGvFQyJQHe9eN7Dcbqv2rYchufb830PSAkkFGafYX53l-hrgB-vVrw1dvdmaw6XQ7/pub?gid=281851636&single=true&output=csv',   // optional: published CSV of the "Run log" tab, for the "pulled on" date
    // Segment types shown. Others (vertical geo, app install users, ...) are skipped.
    includeTypes: ['AFFINITY', 'IN_MARKET', 'LIFE_EVENT', 'DETAILED_DEMOGRAPHIC'],
    // "Financial services related" = keyword match anywhere in the segment's path.
    fiKeywords: ['bank', 'credit', 'loan', 'mortgage', 'financ', 'invest', 'insurance',
                 'retire', 'wealth', 'saving', 'checking', 'debt', 'tax', 'real estate',
                 'home', 'house', 'renter', 'moving', 'relocat', 'auto', 'vehicle', 'motor',
                 'student', 'college', 'graduat', 'business', 'wedding', 'marri', 'newlywed',
                 'parent', 'baby']
  };
  /* ================================================================ */

  var root = document.getElementById('e2a-ax');
  if (!root || root.getAttribute('data-ax-init')) return;
  root.setAttribute('data-ax-init', '1');

  var TYPE_LABELS = {
    AFFINITY: 'Affinity', IN_MARKET: 'In-market',
    LIFE_EVENT: 'Life events', DETAILED_DEMOGRAPHIC: 'Detailed demographics'
  };
  var REQUIRED = ['Type', 'ID', 'Name', 'Full path', 'Launched to all'];
  var SEP = '\u0001';
  var MAX_ROWS = 2000;

  var el = function (name) { return root.querySelector('[data-ax="' + name + '"]'); };
  var nodes = {}, rootKeys = [], open = new Set(), activeTypes = new Set();
  var fiRe = new RegExp('\\b(?:' + CONFIG.fiKeywords.map(function (k) {
    return k.replace(/[.*+?^${}()|[\]\\]/g, function (m) { return '\\' + m; });
  }).join('|') + ')', 'i');
  var state = { q: [], fi: false, launched: false };

  el('title').textContent = CONFIG.title || '';

  /* ---------- CSV ---------- */
  // WordPress rewrites ampersands in this block as HTML entities, so the script
  // contains no literal ampersand and decodes any that WordPress added to the links.
  function cleanUrl(u) {
    return String(u).replace(/\u0026(?:#0*38|amp);/g, '\u0026').trim();
  }

  function parseCSV(text) {
    if (text.charCodeAt(0) === 0xFEFF) text = text.slice(1);
    var rows = [], row = [], f = '', q = false;
    for (var i = 0; i < text.length; i++) {
      var c = text[i];
      if (q) {
        if (c === '"') { if (text[i + 1] === '"') { f += '"'; i++; } else q = false; }
        else f += c;
      } else if (c === '"') q = true;
      else if (c === ',') { row.push(f); f = ''; }
      else if (c === '\n' || c === '\r') {
        if (c === '\r') { if (text[i + 1] === '\n') i++; }
        row.push(f); rows.push(row); row = []; f = '';
      } else f += c;
    }
    if (f !== '' || row.length) { row.push(f); rows.push(row); }
    return rows;
  }

  function toObjects(rows, label) {
    if (!rows.length) throw new Error('“' + label + '” is empty.');
    var head = rows[0].map(function (h) { return h.trim(); });
    var missing = REQUIRED.filter(function (r) { return head.indexOf(r) < 0; });
    if (missing.length) {
      throw new Error('“' + label + '” is missing the column(s) ' + missing.join(', ') +
        '. Check that the link points at a segment tab from the export script.');
    }
    return rows.slice(1).filter(function (r) {
      return r.some(function (v) { return v !== ''; });
    }).map(function (r) {
      var o = {};
      head.forEach(function (h, i) { o[h] = (r[i] || '').trim(); });
      return o;
    });
  }

  function fetchCSV(src) {
    return fetch(cleanUrl(src.url), { credentials: 'omit' }).then(function (res) {
      if (!res.ok) throw new Error('“' + src.label + '” returned HTTP ' + res.status + '.');
      return res.text();
    }).then(function (text) {
      if (/^\s*</.test(text)) {
        throw new Error('“' + src.label + '” returned a web page, not CSV. In Google Sheets use ' +
          'File > Share > Publish to web, pick that tab, choose CSV, and use that link.');
      }
      return parseCSV(text);
    });
  }

  /* ---------- Tree ---------- */
  function addRow(r) {
    var type = r['Type'];
    if (CONFIG.includeTypes.indexOf(type) < 0) return false;
    var path = (r['Full path'] || r['Name']).split(' > ')
      .map(function (s) { return s.trim(); }).filter(Boolean);
    if (!path.length) return false;

    if (!nodes[type]) {
      nodes[type] = makeNode(type, TYPE_LABELS[type] || type, type, [], 0, null);
      nodes[type].isRoot = true;
      rootKeys.push(type);
    }
    var parentKey = type;
    for (var i = 0; i < path.length; i++) {
      var key = type + SEP + path.slice(0, i + 1).join(SEP);
      if (!nodes[key]) {
        nodes[key] = makeNode(key, path[i], type, path.slice(0, i + 1), i + 1, parentKey);
        nodes[parentKey].children.push(key);
      }
      parentKey = key;
    }
    var n = nodes[parentKey];
    var launched = String(r['Launched to all']).toUpperCase() === 'TRUE';
    n.segment = true;
    if (r['ID']) { if (n.ids.indexOf(r['ID']) < 0) n.ids.push(r['ID']); }
    n.launched = n.launched === null ? launched : (n.launched ? launched : false);
    return true;
  }

  function makeNode(key, name, type, path, depth, parent) {
    var text = path.join(' > ');
    return {
      key: key, name: name, type: type, depth: depth, parent: parent,
      children: [], ids: [], segment: false, launched: null,
      pathLower: text.toLowerCase(), fi: fiRe.test(text), segCount: 0
    };
  }

  function finalizeTree() {
    var byName = function (a, b) { return nodes[a].name.localeCompare(nodes[b].name); };
    Object.keys(nodes).forEach(function (k) { nodes[k].children.sort(byName); });
    rootKeys.sort(function (a, b) {
      return CONFIG.includeTypes.indexOf(a) - CONFIG.includeTypes.indexOf(b);
    });
    rootKeys.forEach(function (k) { nodes[k].segCount = countSegments(k); open.add(k); });
  }

  function countSegments(key) {
    var n = nodes[key], c = n.segment ? 1 : 0;
    n.children.forEach(function (ch) { c += countSegments(ch); });
    n.segCount = c;
    return c;
  }

  /* ---------- Filtering ---------- */
  function filtering() { return state.q.length > 0 || state.fi || state.launched; }

  function matches(n) {
    if (!n.segment) return false;
    for (var i = 0; i < state.q.length; i++) if (n.pathLower.indexOf(state.q[i]) < 0) return false;
    if (state.fi) { if (!n.fi) return false; }
    if (state.launched) { if (n.launched !== true) return false; }
    return true;
  }

  function visibleRoots() {
    return rootKeys.filter(function (k) { return activeTypes.size === 0 || activeTypes.has(k); });
  }

  /* ---------- Render ---------- */
  function render() {
    var out = [], hits = 0, tree = el('tree');

    if (filtering()) {
      var show = new Set(), hit = new Set();
      var walk = function (key) {
        var n = nodes[key];
        if (matches(n)) {
          hit.add(key); hits++;
          for (var p = key; p; p = nodes[p].parent) show.add(p);
        }
        n.children.forEach(walk);
      };
      visibleRoots().forEach(walk);
      var emit = function (key) {
        if (!show.has(key)) return;
        out.push({ key: key, expanded: true, context: !(hit.has(key) || nodes[key].isRoot) });
        nodes[key].children.forEach(emit);
      };
      visibleRoots().forEach(emit);
    } else {
      var browse = function (key) {
        var isOpen = open.has(key);
        out.push({ key: key, expanded: isOpen, context: false });
        if (isOpen) nodes[key].children.forEach(browse);
      };
      visibleRoots().forEach(browse);
    }

    var frag = document.createDocumentFragment();
    out.slice(0, MAX_ROWS).forEach(function (r) { frag.appendChild(rowEl(r)); });
    if (out.length > MAX_ROWS) {
      var more = document.createElement('div');
      more.className = 'ax-more';
      more.textContent = 'Showing the first ' + MAX_ROWS + ' rows. Narrow the search to see the rest.';
      frag.appendChild(more);
    }
    tree.textContent = '';
    tree.appendChild(frag);

    var total = visibleRoots().reduce(function (s, k) { return s + nodes[k].segCount; }, 0);
    el('status').textContent = filtering()
      ? (hits === 0 ? 'No segments match. Try a broader search or turn off a filter.'
                    : hits + ' matching segment' + (hits === 1 ? '' : 's'))
      : total + ' segments';
    el('expand').disabled = filtering();
    el('collapse').disabled = filtering();
  }

  function rowEl(r) {
    var n = nodes[r.key];
    var row = document.createElement('div');
    row.className = 'ax-row' + (n.isRoot ? ' ax-root' : '') + (r.context ? ' ax-context' : '');
    row.setAttribute('data-type', n.type);
    row.style.setProperty('--d', n.depth);

    if (n.children.length ? !filtering() : false) {
      var t = document.createElement('button');
      t.type = 'button';
      t.className = 'ax-tog';
      t.setAttribute('data-toggle', n.key);
      t.setAttribute('aria-expanded', r.expanded ? 'true' : 'false');
      t.setAttribute('aria-label', (r.expanded ? 'Collapse ' : 'Expand ') + n.name);
      row.appendChild(t);
    } else {
      var gap = document.createElement('span');
      gap.className = 'ax-tog-gap';
      row.appendChild(gap);
    }

    var name = document.createElement('span');
    name.className = 'ax-name';
    appendHighlighted(name, n.name, state.q);
    if (n.isRoot) {
      var cnt = document.createElement('span');
      cnt.className = 'ax-count';
      cnt.textContent = ' ' + n.segCount;
      name.appendChild(cnt);
    }
    row.appendChild(name);

    if (n.segment) {
      var tags = document.createElement('span');
      tags.className = 'ax-tags';
      if (n.launched === false) tags.appendChild(badge('Limited availability',
        'Not launched to all channels and locales'));
      n.ids.forEach(function (id) {
        var b = document.createElement('button');
        b.type = 'button';
        b.className = 'ax-id';
        b.setAttribute('data-copy', id);
        b.setAttribute('aria-label', 'Copy segment ID ' + id);
        b.textContent = 'ID ' + id;
        tags.appendChild(b);
      });
      row.appendChild(tags);
    }
    return row;
  }

  function badge(text, title) {
    var s = document.createElement('span');
    s.className = 'ax-badge';
    s.textContent = text;
    if (title) s.title = title;
    return s;
  }

  function appendHighlighted(parent, text, tokens) {
    if (!tokens.length) { parent.appendChild(document.createTextNode(text)); return; }
    var lower = text.toLowerCase(), marks = new Array(text.length).fill(false);
    tokens.forEach(function (t) {
      for (var i = lower.indexOf(t); i >= 0; i = lower.indexOf(t, i + 1)) {
        for (var j = i; j < i + t.length; j++) marks[j] = true;
      }
    });
    var i = 0;
    while (i < text.length) {
      var j = i;
      while (j < text.length ? marks[j] === marks[i] : false) j++;
      var chunk = text.slice(i, j);
      if (marks[i]) {
        var m = document.createElement('mark');
        m.textContent = chunk;
        parent.appendChild(m);
      } else parent.appendChild(document.createTextNode(chunk));
      i = j;
    }
  }

  function renderChips() {
    var chips = el('chips');
    chips.textContent = '';
    rootKeys.forEach(function (k) {
      var b = document.createElement('button');
      b.type = 'button';
      b.className = 'ax-chip';
      b.setAttribute('data-type', k);
      b.setAttribute('data-chip', k);
      b.setAttribute('aria-pressed', activeTypes.has(k) ? 'true' : 'false');
      b.appendChild(document.createTextNode(nodes[k].name));
      var n = document.createElement('span');
      n.className = 'ax-n';
      n.textContent = nodes[k].segCount;
      b.appendChild(n);
      chips.appendChild(b);
    });
  }

  /* ---------- Events ---------- */
  var debounce;
  el('q').addEventListener('input', function (e) {
    clearTimeout(debounce);
    debounce = setTimeout(function () {
      state.q = e.target.value.toLowerCase().split(/\s+/).filter(Boolean);
      render();
    }, 120);
  });
  el('fi').addEventListener('change', function (e) { state.fi = e.target.checked; render(); });
  el('launched').addEventListener('change', function (e) { state.launched = e.target.checked; render(); });
  el('expand').addEventListener('click', function () {
    Object.keys(nodes).forEach(function (k) { if (nodes[k].children.length) open.add(k); });
    render();
  });
  el('collapse').addEventListener('click', function () { open.clear(); render(); });

  root.addEventListener('click', function (e) {
    var chip = e.target.closest('[data-chip]');
    if (chip) {
      var k = chip.getAttribute('data-chip');
      if (activeTypes.has(k)) activeTypes.delete(k); else activeTypes.add(k);
      renderChips(); render();
      return;
    }
    var tog = e.target.closest('[data-toggle]');
    if (tog) {
      var key = tog.getAttribute('data-toggle');
      if (open.has(key)) open.delete(key); else open.add(key);
      render();
      var again = root.querySelector('[data-toggle="' + CSS.escape(key) + '"]');
      if (again) again.focus();
      return;
    }
    var copy = e.target.closest('[data-copy]');
    if (copy) copyId(copy);
  });

  function copyId(btn) {
    var id = btn.getAttribute('data-copy');
    var done = function () {
      btn.textContent = 'Copied';
      setTimeout(function () { btn.textContent = 'ID ' + id; }, 1200);
    };
    if (navigator.clipboard ? navigator.clipboard.writeText : false) {
      navigator.clipboard.writeText(id).then(done, function () { fallbackCopy(id, done); });
    } else fallbackCopy(id, done);
  }
  function fallbackCopy(id, done) {
    var ta = document.createElement('textarea');
    ta.value = id; ta.setAttribute('readonly', '');
    ta.style.position = 'absolute'; ta.style.left = '-9999px';
    document.body.appendChild(ta); ta.select();
    try { if (document.execCommand ? document.execCommand('copy') : false) done(); } catch (e) {}
    document.body.removeChild(ta);
  }

  /* ---------- Load ---------- */
  function load() {
    var sources = CONFIG.sources.filter(function (s) { return s.url; });
    if (!sources.length) {
      el('meta').textContent = 'Add the published CSV links to CONFIG.sources in this block to load the catalog.';
      return;
    }
    var errors = [], skipped = 0;
    var jobs = sources.map(function (src) {
      return fetchCSV(src).then(function (rows) {
        toObjects(rows, src.label).forEach(function (r) { if (!addRow(r)) skipped++; });
      }).catch(function (err) { errors.push(err.message); });
    });
    var runLog = CONFIG.runLogUrl
      ? fetchCSV({ label: 'Run log', url: CONFIG.runLogUrl }).catch(function () { return null; })
      : Promise.resolve(null);

    Promise.all(jobs.concat([runLog])).then(function (results) {
      var logRows = results[results.length - 1];
      if (!rootKeys.length) {
        el('meta').textContent = 'The segment catalog could not be loaded.';
        showWarn(errors);
        return;
      }
      finalizeTree();
      var total = rootKeys.reduce(function (s, k) { return s + nodes[k].segCount; }, 0);
      var meta = total + ' Google-built audience segments you can target in Google Ads.';
      var runAt = (logRows || []).filter(function (r) { return r[0] === 'Run at'; })[0];
      if (runAt ? runAt[1] : false) meta += ' Pulled from Google Ads on ' + runAt[1] + '.';
      el('meta').textContent = meta;
      el('controls').hidden = false;
      showWarn(errors);
      renderChips();
      render();
      root.setAttribute('data-ax-loaded', String(total));
    });
  }

  function showWarn(errors) {
    var w = el('warn');
    if (!errors.length) { w.hidden = true; return; }
    w.textContent = errors.join(' ');
    w.hidden = false;
  }

  load();
})();