Car logos for leasing brokers and car marketplaces

Brokers, contract hire sites, and car marketplaces sell by manufacturer first. The browse grid, the deal card, the make landing page, and the quote PDF all need the same badge at a different size. Serve every one of them from one URL pattern, and stop exporting logos every time a make joins the deal list.

See what it saves
selectbroker.example/car-leasing

Browse lease deals by manufacturer

16 manufacturers · 16 in-stock and factory-order deals

16 deals · inc. VAT

Showing the first 6

  • Tesla badge

    Tesla Model 3

    RWD 4dr Auto

    £389 /mo

    £3,501 initial · 36 months

    In stock
  • Kia badge

    Kia EV3

    150kW GT-Line 81kWh

    £342 /mo

    £3,078 initial · 48 months

    In stock
  • BMW badge

    BMW i4

    eDrive40 M Sport 5dr

    £512 /mo

    £4,608 initial · 36 months

    Factory order
  • Volkswagen badge

    Volkswagen ID.7

    Pro Match 5dr Auto

    £436 /mo

    £3,924 initial · 48 months

    In stock
  • Škoda badge

    Škoda Enyaq

    85 Edition 5dr Auto

    £358 /mo

    £3,222 initial · 36 months

    In stock
  • Audi badge

    Audi Q4 e-tron

    45 S Line 5dr Auto

    £478 /mo

    £4,302 initial · 48 months

    Factory order
GET https://motomarks.io/img/kia?type=badge&size=smCache-Control: public, max-age=86400
A broker's browse-by-manufacturer page. Every tile and every deal card badge is a live CDN request from the same URL pattern at size=sm. Pick a manufacturer to filter the deals; switch Personal and Business to see the same badges on a different price basis.

What it changes for a broker or marketplace

A deal list changes weekly and a manufacturer grid is only ever as complete as its last export. Four costs that stop recurring, and what each one replaces.
Manufacturer pages that are always complete
The browse-by-manufacturer grid is the busiest entry point on a broker or marketplace site, and it is only as good as its worst tile. When the grid is the brand list from the JSON API and a badge per slug, a make that joins the deal list on Monday has a tile on Monday.
Replaces a badge export every time a make joins the list
Deal cards that read at a glance
Sixty cards on a results page and a customer scanning for the three makes they care about. A badge next to the model name is faster to scan than text, and it is the same badge at the same size on every card because the URL is the same.
Replaces inconsistent card imagery across the funnel
Per-make landing pages ready for search
/car-leasing/kia and /used/hyundai are where organic traffic lands. The full logo at hero size, the badge in breadcrumbs, and the brand colour from the JSON API are the whole visual identity of the page, and none of it is a file in your CMS.
Replaces a design pass per manufacturer landing page
One partner platform, many broker brands
Brokers often run several branded sites, or several brokers run on one platform. One publishable key serves all of them, the usage dashboard splits traffic by domain, and a rebrand reaches every site through the cache.
Replaces a logo set per white-label site

How Leaselab took 100 brands off the operations budget

Leaselab is a novated lease provider, and its employee car chooser is a browse-by-manufacturer grid in everything but name. More than 100 brands across multiple platforms, every tile once a file. This is what their CTO said changed.
Company
Leaselab
Footprint
Multiple platforms
Library
More than 100 automotive brands
Before Motomarks
An extensive operational cost

What the team stopped doing

  1. 01

    Hours chasing updated brand assets

    The asset behind the URL is updated; the URL does not change

  2. 02

    Resizing logos by hand for each placement

    size= and type= are query parameters

  3. 03

    Applying one change across various systems

    Every platform reads the same URL, so one update reaches all of them

Our browse-by-manufacturer pages are the busiest entry point we have, and every tile used to be a file someone exported. Now the grid is the brand list from the JSON API and a badge URL per slug. When a new make enters the deal list, the page is already correct.
AC
Adrian Ciaschetti
CTO, Leaselab

Where the badge goes on a broker or marketplace site

Six placements from the manufacturer grid to the quote PDF. Each row is the literal query string that surface sends.
Browse by manufacturer
A 32px badge with the make name under it. Sixteen to sixty tiles, served as WebP and cached for a day.
type=badge&size=sm
Deal card
The badge beside the model and derivative, so a results page scans by make before the customer reads a word.
type=badge&size=sm
Make landing page hero
The full logo at the top of /car-leasing/kia, with the brand colour from the JSON API behind it.
type=full&size=lg
Search filters and facets
A 20px badge next to each make and its deal count in the left rail.
type=badge&size=xs
Comparison and shortlist
A wordmark per column heading when a customer compares three deals side by side.
type=wordmark&size=sm&aspect=height
Quote PDF and enquiry email
PNG for the document renderer and the email client, same slug, same size scale.
type=badge&size=sm&format=png

What a manufacturer grid costs to keep by hand

The defaults describe a broker with forty manufacturers across a car site, a van site, and a quote template. Every new make and every rebrand lands on each of them. Put in your own numbers and compare with a plan.

Leaselab maintains more than 100

Car site, van site, quote template

Rebrands, new brands, corrections

Source, resize, convert, commit, deploy, check

Find, trim, export sizes and formats, once

Salary, benefits, and overhead per hour

Motomarks plan to compare

Your numbers; change any input. First year = brands × minutes per brand + changes × codebases × hours per change. Each year after drops the one-time build. The model counts engineering time only; it leaves out CDN hosting, storage, and the cost of shipping an out-of-date mark.

Coverage for deal lists

The makes that fill broker deal lists and marketplace search, including the van and LCV makes a commercial site needs and the EV brands moving up the list. Each tile links to the brand's logo page; the browse page has the full index.

Integration in four steps

Brand list to manufacturer grid, one badge component, make landing pages with brand colour, and one key for every site. The examples use Next.js; the URLs are the same in any stack.
The manufacturer grid is the brand list from the API plus one image URL. There is nothing left to export.
AC
Adrian Ciaschetti
CTO, Leaselab
  1. 01

    Build the manufacturer grid from the brand list

    Fetch the published brands on the server with the secret key, intersect with the makes you have deals for, and render a tile per slug. New makes appear on the next revalidation; no image is committed to the repository.

    app/car-leasing/page.tsx
    const res = await fetch("https://api.motomarks.io/brands", {
      headers: { Authorization: `Bearer ${process.env.MOTOMARKS_SECRET_KEY}` },
      next: { revalidate: 86400 },
    });
    const brands: { id: string; name: string }[] = await res.json();
    const withDeals = new Set(await db.deals.distinctMakeSlugs());
    
    export const manufacturers = brands
      .filter((b) => withDeals.has(b.id))
      .sort((a, b) => a.name.localeCompare(b.name));
  2. 02

    Render the badge on grid tiles and deal cards

    One component, one size prop. The grid asks for sm; the left-rail filter asks for xs. Keep the make name visible so the card reads correctly if a variant is not published.

    components/make-badge.tsx
    export function MakeBadge({ slug, name, size = "sm" }: { slug: string; name: string; size?: "xs" | "sm" | "md" }) {
      const src = `https://motomarks.io/img/${slug}?type=badge&size=${size}&token=${process.env.NEXT_PUBLIC_MOTOMARKS_KEY}`;
      const px = size === "xs" ? 20 : size === "sm" ? 32 : 48;
      return <img src={src} alt={`${name} badge`} width={px} height={px} loading="lazy" />;
    }
  3. 03

    Give every make landing page its own hero

    The brand endpoint returns the name, the published variants, and the primary colour. Use the full logo at size=lg and the colour as a tinted band behind it, and the page has an identity without a designer touching it.

    app/car-leasing/[make]/page.tsx
    const brand = await fetch(`https://api.motomarks.io/brands/${params.make}`, {
      headers: { Authorization: `Bearer ${process.env.MOTOMARKS_SECRET_KEY}` },
      next: { revalidate: 86400 },
    }).then((r) => r.json());
    
    <header style={{ background: `${brand.color ?? "#111"}14` }}>
      <img
        src={`https://motomarks.io/img/${brand.id}?type=full&size=lg&token=${process.env.NEXT_PUBLIC_MOTOMARKS_KEY}`}
        alt={`${brand.name} logo`}
        height={64}
      />
      <h1>{brand.name} lease deals</h1>
    </header>
  4. 04

    Serve several branded sites from one key

    A broker group with a car site, a van site, and a prestige site can use one publishable key. Browser requests are attributed by Referer, so the usage dashboard already shows traffic per domain. On Pro, restrict the key to those hostnames.

    Usage dashboard
    Allowed hostnames (Pro)
      www.selectbroker.example
      vans.selectbroker.example
      prestige.selectbroker.example
    
    Usage by domain, last 7 days
      www.selectbroker.example       412,930
      vans.selectbroker.example       88,114
      prestige.selectbroker.example   21,507

Questions before you integrate

We list deals from a rates feed. How do we map the feed's make names to slugs?

Pull the published brand list from the JSON API once a day and match on name, storing the slug next to each make in your own tables. Keep a small override map for feed spellings that differ (for example a feed that says VW or Mercedes). The vehicle make selector guide has the same pattern in code.

Our manufacturer grid has forty tiles. Does that blow through the Free plan?

Forty tiles is forty image requests on an uncached page view, and browsers cache each badge for 24 hours. Free covers 1,000 requests a day, which suits a prototype. A public broker or marketplace site belongs on Startup (10,000 a day) or Pro (100,000 a day), both of which remove the attribution requirement.

Can we use the brand colour on the make landing page?

Yes. The brand endpoint returns a color field and a colors array in priority order. Use them as a tint or accent behind the full logo; the logos themselves remain the property of their manufacturers, so present the page as a listing of their vehicles rather than as an official brand page.

We run several sites on one platform. Do we need a key per brand?

One publishable key can serve every site and the usage dashboard splits browser traffic by domain. Create separate keys if you want to roll one site's key without touching the others, and on Pro and Enterprise give each key its own hostname allowlist, including wildcards such as *.yourplatform.example.

What does this cost against exporting the logos ourselves?

Startup is $228 a year billed monthly. Preparing forty manufacturer badges in two sizes and keeping them current across a car site and a van site is more than three hours of work in the first month alone, before any manufacturer changes its mark. The cost model on this page uses your numbers.

Every manufacturer page,
already complete.

Create a free key, build the grid from the brand list, and the next make to join your deal list arrives with its badge.

Read the JSON API reference

Free includes 1,000 requests per day with an attribution link. Startup and Pro remove attribution.