GEICO
Quotes and reads across GEICO's published catalogue — the vehicle lines it underwrites itself (auto, motorcycle, ATV, RV, boat, scooter, classic and…
Quotes and reads across GEICO's published catalogue — the vehicle lines it underwrites itself (auto, motorcycle, ATV, RV, boat, scooter, classic and Mexico auto, commercial auto), the property, specialty and small-business lines GEICO Insurance Agency places with third-party carriers, its local agent directory, its claim-status lookup, and the register of which partner actually writes each brokered line.
Domain: geico.com
Also known as: GEICO, Geico, geico.com, Government Employees Insurance Company, GEICO Insurance Agency
Call it directly
bowmark.providers.geico.getRentersQuote(args: RentersQuoteArgs): Promise<geicoRentersQuote>
bowmark.providers.geico.listDiscounts(args: GeicoDiscountsArgs): Promise<GeicoDiscountList>
bowmark.providers.geico.listPartnerCompanies(args?: GeicoPartnerCompaniesArgs): Promise<GeicoPartnerCompanyList>
bowmark.providers.geico.findAgent(query: GeicoAgentQuery, limit?: number): Promise<GeicoAgentSearch>Functions
| Function | What it does |
|---|---|
getRentersQuote | What GEICO charges to insure the contents of one rented home: the amount due today and the full term premium, the personal-property limit, deductible and liability limit the rate was struck… |
listDiscounts | The discounts GEICO publishes for one line of business — each discount's name, GEICO's own description of what qualifies for it, and the saving it is advertised at where the site states one. |
listPartnerCompanies | Which company actually underwrites each of the 24 lines GEICO Insurance Agency BROKERS rather than writes itself — the read that tells an agent whose paper a "GEICO" home, life, pet, condo… |
findAgent | The GEICO local agents near a US location — each office's display name, the agent's own first and last name, street address, phone, opening hours, distance from the search centre and a link… |
Types
interface geicoRow {
/** US ZIP code — GEICO rates and routes every one of these functions by it. */
zip: string;
}
interface RentersQuoteArgs {
/** The rented property being insured. */
address: {
street: string;
unit?: string;
city: string;
state: string;
zip: string;
};
/** The CALLER's own identity. GEICO's first card demands a name and a date of
* birth before it will route a quote, so this is required rather than optional
* — a provider that can quote without one is quoting a stranger. */
identity: QuoteIdentity;
/** Does the lease require the tenant to carry renters insurance? Asked before
* rating and it can move the premium, so it is the caller's to state. */
leaseRequiresInsurance?: boolean;
/** When cover should start, `YYYY-MM-DD`. OPTIONAL because the step sequence
* is A/B tested per session — some ask for it and some do not — and it falls
* back to the card's own prefilled value and then to today. */
coverageStartDate?: string;
}
/** Who the quote is for, exactly as they would type it into the site's own form.
* Never defaulted, never read from the environment, never held by us. */
interface QuoteIdentity {
firstName: string;
lastName: string;
/** ISO `YYYY-MM-DD`. Carriers rate on the DATE, never on an age you computed. */
dob: string;
email: string;
/** E.164 preferred. A quote form's purpose is generating a CALLABLE lead, so
* this number is one a stranger can reach. */
phone: string;
}
interface geicoRentersQuote {
/** US ZIP code the rate was struck for. */
zip: string;
/** The address as GEICO normalized it, which is not always what was asked for. */
address: string;
city: string | null;
state: string | null;
/** Amount due at purchase — the headline figure the site leads with. Null is
* never a zero: it means the card did not print one. */
dueToday: number | null;
/** Total premium for the whole policy term. */
termPremium: number | null;
/** Term the `termPremium` covers, in months. 12 on every capture so far, and
* still read from the page rather than assumed. */
termMonths: number | null;
/** The coverage the premium was struck at. Read it before comparing two
* numbers: $190 at a $500 deductible and $190 at a $100 deductible are
* different products. */
coverage: {
personalPropertyLimit: number | null;
deductible: number | null;
liabilityLimit: number | null;
waterBackup: boolean | null;
};
/** What else GEICO offered at this address, so a caller can re-ask rather than
* guess which limits exist. */
options: {
personalPropertyLimits: number[];
deductibles: number[];
liabilityLimits: number[];
};
/** WHO actually writes the policy. GEICO BROKERS its property lines rather than
* underwriting them, so this is not decoration: the premium above is this
* carrier's, returned under a `geico` namespace. The legal entity alone, read
* from the card's own disclosure copy — which is what joins to the regulators'
* register via `bowmark.insurance.searchCarriers`. */
underwriter: string | null;
/** The quote's own reference, for a caller who wants to resume it on the site. */
quoteNumber: string | null;
}
interface GeicoDiscountsArgs {
/** Which published category to read. */
line: "auto" | "motorcycle" | "multi-policy" | "organization-member" | "military"
| "federal-employee" | "student" | "mature-driver" | "defensive-driver";
}
interface GeicoDiscountList {
line: string;
/** The page actually read, resolved from the hub's own links at call time. */
sourceUrl: string;
discounts: GeicoDiscount[];
/** The page's verbatim state-availability notice. Read it before treating any
* row as an entitlement: the list is national, availability is not. */
disclaimer: string | null;
/** GEICO's own "Information current as of <month year>" stamp, where printed. */
informationCurrentAsOf: string | null;
}
interface GeicoDiscount {
name: string;
/** GEICO's own description of what qualifies, verbatim. */
qualifies: string;
/** Null where GEICO publishes no figure — which is the majority. Never 0. */
advertisedSaving: { text: string; percent: number; basis: "maximum" | "flat" } | null;
/** True where THIS discount's own copy qualifies it by state. */
stateDependent: boolean;
/** The section it was listed under, or null on a flat list. */
category: string | null;
}
interface GeicoPartnerCompaniesArgs {
/** Narrow to one published category, e.g. "Renters Insurance" (case-insensitive). Omit for every line. */
line?: string;
}
interface GeicoPartnerCompany {
/** GEICO's own heading, verbatim, e.g. "Homeowners Insurance". Never carries
* GEICO's own name: only the lines GEICO BROKERS are on this page at all. */
line: string;
/** The placed brand/agency's name, as the page prints it. */
name: string;
/** Where the directory links this placement — usually its own site. Null if unlinked. */
url: string | null;
/** True where GEICO's own asterisk marks this as an AFFILIATED (Berkshire Hathaway) company. */
affiliated: boolean;
/** The underwriting entities named under this placement. Empty when the
* placement name IS the underwriting company. */
underwrittenBy: string[];
}
interface GeicoPartnerCompanyList {
companies: GeicoPartnerCompany[];
/** GEICO's own legend for what this list means and what the asterisk marks, verbatim. */
legend: string;
/** GEICO's own privacy/off-site notice, verbatim. */
disclaimer: string;
sourceUrl: string;
}
interface GeicoAgentQuery {
/** 5-digit US ZIP code. Either this or `location` is required. */
zip?: string;
/** Free-text place — "Chicago, IL", a street address, a city. GEICO geocodes it,
* so this is as capable as `zip` rather than a fallback. Either this or `zip`
* is required; passing both prefers `zip`. */
location?: string;
/** 25, 50 or 100 — the only radii GEICO's own form offers. Defaults to 50. */
radiusMiles?: 25 | 50 | 100;
/** Narrow to the offices GEICO staffs in this language. Defaults to "english". */
language?: "english" | "spanish";
/** Also read each RETURNED agent's own page for `details`. One extra page GET
* per agent returned, so bound it with `limit`. Defaults to false. */
details?: boolean;
}
interface GeicoAgentSearch {
agents: GeicoAgent[];
/** Where GEICO geocoded the query TO. Read this before treating an empty
* `agents` as "nobody is near me": the locator never rejects an unrecognised
* place, it geocodes loosely and searches wherever it lands. */
searchedFrom: { latitude: number; longitude: number };
/** The radius the search actually ran at, in miles. */
radiusMiles: number;
sourceUrl: string;
/** One line per agent whose DETAIL page refused us — only ever non-empty when
* `details: true` was passed. Read it before treating a null `details` as
* "this agent publishes no page": the other cause is that their page would
* not load, and only that one is a fact about us. */
warnings: string[];
}
interface GeicoAgent {
/** The office's own display name, e.g. "Local GEICO Agent - Canton". */
displayName: string;
/** The agent's name, where the office is staffed by a named agent. */
firstName: string | null;
lastName: string | null;
/** GEICO's own classification: "GFR" is an exclusive local office, "Agency" an
* independent agency. Verbatim, because a caller choosing who to call cares. */
configType: string | null;
locationType: string | null;
formattedAddress: string;
city: string | null;
/** 10 digits, unformatted, as GEICO returns it. */
phone: string | null;
/** Miles from `searchedFrom`, not from any address you typed. GEICO's figure. */
distanceMiles: number | null;
latitude: number | null;
longitude: number | null;
/** Opening hours, one line per day. Empty where the office publishes none. */
hours: string[];
/** This agent's own page on geico.com, where one exists. */
url: string | null;
/** GEICO's internal office codes — what attributes a quote to THIS office. */
soa: string | null;
sob: string | null;
languages: string[];
/** Only when `details: true` was asked for AND the agent page loaded. */
details: GeicoAgentDetails | null;
}
interface GeicoAgentDetails {
/** The lines this agent is appointed to write, as their page names them,
* e.g. ["Auto Insurance", "Homeowners Insurance"]. */
products: string[];
/** The independent agency that owns the office, where the page names one.
* Null on a company-owned office. */
agency: string | null;
email: string | null;
/** The states the page says this agent is licensed to serve. */
licensedStates: string[];
sourceUrl: string;
}