Find an API

Search public APIs with auth details & Postman guides

← All APIs

CRM cards

hubapi · Company

Company No Auth Free & Open API

Allows an app to extend the CRM UI by surfacing custom cards in the sidebar of record pages. These cards are defined up-front as part of app configuration, then populated by external data fetch requests when the record page is accessed by a user.

Authentication

No authentication requiredFree to use with no key needed.

Sample Requests

GET Get sample card detail response

Returns an example card detail response. This is the payload with displayed details for a card that will be shown to a user. An app should send this in response to the data fetch request.

https://api.apis.guru/v2/specs/hubapi.com/crm/v3/crm/v3/extensions/cards/sample-response

Hover any highlighted part to learn what it does

curl -X GET "https://api.apis.guru/v2/specs/hubapi.com/crm/v3/crm/v3/extensions/cards/sample-response"
import requests
response = requests.get(
    "https://api.apis.guru/v2/specs/hubapi.com/crm/v3/crm/v3/extensions/cards/sample-response",
)
print(response.json())
const url = 'https://api.apis.guru/v2/specs/hubapi.com/crm/v3/crm/v3/extensions/cards/sample-response';

const response = await fetch(url); 
const data = await response.json();
console.log(data);
package main

import (
	"fmt"
	"io"
	"net/http"
)

func main() {
	targetURL := "https://api.apis.guru/v2/specs/hubapi.com/crm/v3/crm/v3/extensions/cards/sample-response"
	req, _ := http.NewRequest("GET", targetURL, nil)

	client := &http.Client{}
	resp, _ := client.Do(req)
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
require "net/http"
require "json"

uri = URI("https://api.apis.guru/v2/specs/hubapi.com/crm/v3/crm/v3/extensions/cards/sample-response")

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"

req = Net::HTTP::Get.new(uri)

res = http.request(req)
puts JSON.parse(res.body)
<?php
$url = "https://api.apis.guru/v2/specs/hubapi.com/crm/v3/crm/v3/extensions/cards/sample-response";
$opts = ["http" => [
    "method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));
GET Get all cards

Returns a list of cards for a given app.

https://api.apis.guru/v2/specs/hubapi.com/crm/v3/crm/v3/extensions/cards/{appId}

Hover any highlighted part to learn what it does

curl -X GET "https://api.apis.guru/v2/specs/hubapi.com/crm/v3/crm/v3/extensions/cards/{appId}"
import requests
response = requests.get(
    "https://api.apis.guru/v2/specs/hubapi.com/crm/v3/crm/v3/extensions/cards/{appId}",
)
print(response.json())
const url = 'https://api.apis.guru/v2/specs/hubapi.com/crm/v3/crm/v3/extensions/cards/{appId}';

const response = await fetch(url); 
const data = await response.json();
console.log(data);
package main

import (
	"fmt"
	"io"
	"net/http"
)

func main() {
	targetURL := "https://api.apis.guru/v2/specs/hubapi.com/crm/v3/crm/v3/extensions/cards/{appId}"
	req, _ := http.NewRequest("GET", targetURL, nil)

	client := &http.Client{}
	resp, _ := client.Do(req)
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
require "net/http"
require "json"

uri = URI("https://api.apis.guru/v2/specs/hubapi.com/crm/v3/crm/v3/extensions/cards/{appId}")

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"

req = Net::HTTP::Get.new(uri)

res = http.request(req)
puts JSON.parse(res.body)
<?php
$url = "https://api.apis.guru/v2/specs/hubapi.com/crm/v3/crm/v3/extensions/cards/{appId}";
$opts = ["http" => [
    "method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));
GET Get a card.

Returns the definition for a card with the given ID.

https://api.apis.guru/v2/specs/hubapi.com/crm/v3/crm/v3/extensions/cards/{appId}/{cardId}

Hover any highlighted part to learn what it does

curl -X GET "https://api.apis.guru/v2/specs/hubapi.com/crm/v3/crm/v3/extensions/cards/{appId}/{cardId}"
import requests
response = requests.get(
    "https://api.apis.guru/v2/specs/hubapi.com/crm/v3/crm/v3/extensions/cards/{appId}/{cardId}",
)
print(response.json())
const url = 'https://api.apis.guru/v2/specs/hubapi.com/crm/v3/crm/v3/extensions/cards/{appId}/{cardId}';

const response = await fetch(url); 
const data = await response.json();
console.log(data);
package main

import (
	"fmt"
	"io"
	"net/http"
)

func main() {
	targetURL := "https://api.apis.guru/v2/specs/hubapi.com/crm/v3/crm/v3/extensions/cards/{appId}/{cardId}"
	req, _ := http.NewRequest("GET", targetURL, nil)

	client := &http.Client{}
	resp, _ := client.Do(req)
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
require "net/http"
require "json"

uri = URI("https://api.apis.guru/v2/specs/hubapi.com/crm/v3/crm/v3/extensions/cards/{appId}/{cardId}")

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"

req = Net::HTTP::Get.new(uri)

res = http.request(req)
puts JSON.parse(res.body)
<?php
$url = "https://api.apis.guru/v2/specs/hubapi.com/crm/v3/crm/v3/extensions/cards/{appId}/{cardId}";
$opts = ["http" => [
    "method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));

Postman Setup Guide

Get Postman ↗
  1. See official documentation for authentication and setup.

What can you build with CRM cards?

CRM cards is a Company API. Developers commonly use company APIs for:

  • enriching CRM records with company firmographics
  • building lead-generation and prospecting tools
  • verifying business identity and registration details
  • monitoring competitors and market intelligence
  • powering B2B data enrichment pipelines

No authentication required. This API is open — no signup or key needed. Ideal for quick prototypes and public-facing features. CRM cards is free to use, making it a low-risk choice to experiment with.

New to APIs? Read our beginner's guide · Learn about API keys · What is REST?

Open documentation ↗