Geoapify Map Marker API

Render customizable map marker images.

Operations 1

GET /icon Generate a PNG map marker #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/geoapify:geoapify-map-marker-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

geoapify-map-marker-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Geoapify Map Marker API
  version: 2.1.0
  description: Generate customizable PNG map marker images with a background shape, icon or text content, colors, and resolution scaling.
servers:
- url: https://api.geoapify.com/v2
  description: Default API endpoint.
- url: https://api-eu.geoapify.com/v2
  description: EU-focused endpoint. Geoapify service processing uses EU infrastructure.
security:
- ApiKeyInQuery: []
- ApiKeyInHeader: []
tags:
- name: Map Marker
  description: Render customizable map marker images.
paths:
  /icon:
    get:
      tags:
      - Map Marker
      operationId: getMapMarker
      summary: Generate a PNG map marker
      description: 'Generates a customizable PNG marker.


        - Background: `type`

        - Content: `icon` + `iconType`, or `text`

        - Sizing: `contentSize` and `size`


        **Example:** `type=material`, `iconType=material`, `icon=favorite`, `contentSize=20`, `color=#ff5050`, `noWhiteCircle=true`, `noShadow=true`


        **Icons:** Material Icons · Font Awesome 6 Free · Lucide


        **Docs:** Marker Icon API documentation


        > Follow the selected icon library''s license and attribution requirements.'
      parameters:
      - name: type
        in: query
        required: false
        description: Marker background shape. `material` uses a Material-style pin, `awesome` uses a Font Awesome-style pin, `circle` uses a circular background, and `plain` renders only the icon or text without a background shape.
        schema:
          type: string
          enum:
          - material
          - awesome
          - circle
          - plain
          default: material
        example: material
      - name: iconType
        in: query
        required: false
        description: 'Icon library used to resolve the `icon` name. When omitted, the default depends on the marker `type`: `material` for material and circle markers, and `awesome` for awesome markers.


          **Icons:** [Material Icons](https://fonts.google.com/icons) · [Font Awesome 6 Free](https://fontawesome.com/v6/search?m=free&o=r) · [Lucide](https://lucide.dev/icons/)'
        schema:
          type: string
          enum:
          - material
          - awesome
          - lucide
        example: material
      - name: icon
        in: query
        required: false
        description: 'Icon name from the library selected by `iconType`. When `text` is also provided, text is rendered instead of the icon.


          **Icons:** [Material Icons](https://fonts.google.com/icons) · [Font Awesome 6 Free](https://fontawesome.com/v6/search?m=free&o=r) · [Lucide](https://lucide.dev/icons/)'
        schema:
          type: string
          pattern: ^[\w-]{1,100}$
          minLength: 1
          maxLength: 100
        example: favorite
      - name: text
        in: query
        required: false
        description: Text rendered inside the marker instead of an icon. When both `text` and `icon` are provided, `text` takes precedence.
        schema:
          type: string
          maxLength: 100
      - name: size
        in: query
        required: false
        description: Intended marker image height in CSS pixels. Use `scaleFactor` to increase output resolution without changing the intended display size.
        schema:
          type: number
          exclusiveMinimum: 0
        example: 48
      - name: contentSize
        in: query
        required: false
        description: Height of the icon or text content in CSS pixels. When omitted, the API chooses a size proportional to the marker size.
        schema:
          type: number
          exclusiveMinimum: 0
        example: 20
      - name: scaleFactor
        in: query
        required: false
        description: Output pixel-density multiplier from 0.5 to 10. For example, use `2` for a double-resolution image and display it at its logical `size` for sharper rendering.
        schema:
          type: number
          minimum: 0.5
          maximum: 10
        example: 2
      - name: color
        in: query
        required: false
        description: Marker background color. Ignored when `type=plain`.
        schema:
          $ref: '#/components/schemas/ColorValue'
        example: '#ff5050'
      - name: strokeColor
        in: query
        required: false
        description: Marker background-shape outline color. Ignored when `type=plain`.
        schema:
          $ref: '#/components/schemas/ColorValue'
        example: '#ffffff'
      - name: shadowColor
        in: query
        required: false
        description: Marker shadow color. Ignored when `noShadow=true`.
        schema:
          $ref: '#/components/schemas/ColorValue'
        example: '#000000'
      - name: contentColor
        in: query
        required: false
        description: Color of the icon or text rendered inside the marker.
        schema:
          $ref: '#/components/schemas/ColorValue'
        example: '#ffffff'
      - name: noWhiteCircle
        in: query
        required: false
        description: Set to `true` to remove the white circle behind marker content.
        schema:
          type: boolean
          enum:
          - true
        example: true
      - name: noShadow
        in: query
        required: false
        description: Set to `true` to remove the marker shadow.
        schema:
          type: boolean
          enum:
          - true
        example: true
      responses:
        '200':
          description: Binary PNG marker image ready for use in HTML, CSS, or a client-side map library.
          content:
            image/png:
              schema:
                type: string
                format: binary
        '400':
          description: Invalid marker parameter.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GatewayError'
              example:
                statusCode: 400
                error: Bad Request
                message: size should be a positive number
        '401':
          description: Missing or invalid Geoapify API key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GatewayError'
              example:
                statusCode: 401
                error: Unauthorized
                message: Invalid apiKey
        '429':
          description: Rate limit or quota exceeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GatewayError'
              example:
                statusCode: 429
                error: Too Many Requests
                message: Quota exceeded
        '500':
          description: Internal gateway error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GatewayError'
              example:
                statusCode: 500
                error: Internal Server Error
                message: Request failed, please try again later
components:
  schemas:
    ColorValue:
      type: string
      maxLength: 100
      description: CSS-like color value. Hex, named colors, `rgb()`, and `rgba()` are accepted. HTTP clients must URL-encode reserved characters such as `#`; OpenAPI clients such as Swagger UI do this automatically.
      pattern: ^(#([0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})|[a-zA-Z]{3,32}|rgba?\([^)]{1,64}\))$
      examples:
      - '#ff5050'
      - red
      - rgb(255,80,80)
      - rgba(255,80,80,0.8)
    GatewayError:
      type: object
      required:
      - statusCode
      - error
      - message
      properties:
        statusCode:
          type: integer
          description: HTTP status code returned by the gateway.
        error:
          type: string
          description: Standard HTTP error name.
        message:
          type: string
          description: Human-readable explanation of the error.
  securitySchemes:
    ApiKeyInQuery:
      type: apiKey
      in: query
      name: apiKey
      description: Geoapify API key query parameter. Recommended authentication method for public APIs. API keys in URLs can be logged; use x-api-key for server-to-server clients.
    ApiKeyInHeader:
      type: apiKey
      in: header
      name: x-api-key
      description: Geoapify API key header. Supported as an alternative authentication method for public APIs.
x-provenance:
  method: harvested
  publisher: Geoapify
  source: https://apidocs.geoapify.com/assets/openapi/specs/map-marker/map-marker-api-openapi-specs.json
  note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json);
    stamped by stamp-openapi-provenance.py (roadmap#793)