Supply Chain API
The Supply Chain API provides insights into corporate supply chain relationships, helping you understand customer dependencies, supplier networks, and competitive peers. Use this data for supply chain risk analysis, competitive intelligence, and network effects assessment.
Methods
customers()
Retrieve a company’s major customers and customer relationships.
const axion = new Axion('your-api-key');
const customers = await axion.supplyChain.customers('AAPL');
The stock ticker symbol (e.g., ‘AAPL’, ‘TSLA’, ‘MSFT’)
Returns: Promise<ApiResponse>
Major customers of the company including:
- Customer names and tickers
- Revenue dependency percentages
- Relationship strength indicators
- Geographic distribution
Example Response:
{
"data": {
"ticker": "AAPL",
"customers": [
{
"name": "Best Buy Co Inc",
"ticker": "BBY",
"revenuePercentage": 12.5,
"relationship": "Retailer"
},
{
"name": "AT&T Inc",
"ticker": "T",
"revenuePercentage": 8.3,
"relationship": "Carrier Partner"
}
]
}
}
suppliers()
Get information about a company’s key suppliers.
const suppliers = await axion.supplyChain.suppliers('TSLA');
Returns: Promise<ApiResponse>
Key suppliers and vendor relationships including:
- Supplier names and tickers
- Supply categories (components, materials, services)
- Dependency levels
- Geographic locations
Example:
const teslaSuppliers = await axion.supplyChain.suppliers('TSLA');
console.log('Tesla Key Suppliers:');
teslaSuppliers.data.suppliers.forEach(supplier => {
console.log(`${supplier.name} (${supplier.category})`);
});
peers()
Retrieve competitive peer companies.
const peers = await axion.supplyChain.peers('AAPL');
Returns: Promise<ApiResponse>
Competitive peer companies including:
- Peer company names and tickers
- Market overlap areas
- Competitive positioning
- Market share comparisons
Example:
const applePeers = await axion.supplyChain.peers('AAPL');
console.log('Apple Competitive Peers:');
applePeers.data.peers.forEach(peer => {
console.log(`${peer.name} (${peer.ticker}) - ${peer.marketOverlap}`);
});
Use Cases
Supply Chain Risk Assessment
Identify supply chain concentration risks:
const axion = new Axion('your-api-key');
async function analyzeSupplyChainRisk(ticker: string) {
const [customers, suppliers] = await Promise.all([
axion.supplyChain.customers(ticker),
axion.supplyChain.suppliers(ticker)
]);
// Check customer concentration
const topCustomerConcentration = customers.data.customers
.slice(0, 3)
.reduce((sum, c) => sum + c.revenuePercentage, 0);
const riskLevel = topCustomerConcentration > 50 ? 'High' :
topCustomerConcentration > 30 ? 'Medium' : 'Low';
return {
ticker,
customerCount: customers.data.customers.length,
supplierCount: suppliers.data.suppliers.length,
topCustomerConcentration: `${topCustomerConcentration.toFixed(1)}%`,
riskLevel,
topCustomer: customers.data.customers[0]?.name,
topSupplier: suppliers.data.suppliers[0]?.name
};
}
const risk = await analyzeSupplyChainRisk('TSLA');
console.log('Supply Chain Risk Analysis:', risk);
Supplier Diversification Analysis
Analyze supplier geographic and category diversification:
interface SupplierDiversification {
totalSuppliers: number;
categories: Record<string, number>;
geographies: Record<string, number>;
diversificationScore: number;
}
async function analyzeSupplierDiversification(
ticker: string
): Promise<SupplierDiversification> {
const suppliers = await axion.supplyChain.suppliers(ticker);
const categories: Record<string, number> = {};
const geographies: Record<string, number> = {};
suppliers.data.suppliers.forEach(supplier => {
categories[supplier.category] = (categories[supplier.category] || 0) + 1;
geographies[supplier.geography] = (geographies[supplier.geography] || 0) + 1;
});
// Simple diversification score (more categories and geographies = better)
const diversificationScore =
(Object.keys(categories).length * 10) +
(Object.keys(geographies).length * 10);
return {
totalSuppliers: suppliers.data.suppliers.length,
categories,
geographies,
diversificationScore
};
}
const diversification = await analyzeSupplierDiversification('AAPL');
console.log('Supplier Diversification:', diversification);
Competitive Landscape Mapping
Map competitive relationships and market positioning:
interface CompetitiveMap {
company: string;
ticker: string;
peers: Array<{
name: string;
ticker: string;
overlap: string;
}>;
competitivePosition: string;
}
async function mapCompetitiveLandscape(
ticker: string
): Promise<CompetitiveMap> {
const peers = await axion.supplyChain.peers(ticker);
const peerList = peers.data.peers.map(peer => ({
name: peer.name,
ticker: peer.ticker,
overlap: peer.marketOverlap
}));
// Determine competitive position based on number of peers
const position = peers.data.peers.length > 10 ? 'Highly Competitive' :
peers.data.peers.length > 5 ? 'Competitive' :
'Niche Market';
return {
company: ticker,
ticker,
peers: peerList,
competitivePosition: position
};
}
const landscape = await mapCompetitiveLandscape('AAPL');
console.log(`${landscape.company}: ${landscape.competitivePosition}`);
console.log(`Peer count: ${landscape.peers.length}`);
Cross-Company Supply Chain Network
Build a network view of supply chain relationships:
interface NetworkNode {
ticker: string;
role: 'focal' | 'customer' | 'supplier' | 'peer';
connections: string[];
}
async function buildSupplyChainNetwork(
ticker: string
): Promise<Map<string, NetworkNode>> {
const network = new Map<string, NetworkNode>();
// Add focal company
network.set(ticker, {
ticker,
role: 'focal',
connections: []
});
// Get all relationships
const [customers, suppliers, peers] = await Promise.all([
axion.supplyChain.customers(ticker),
axion.supplyChain.suppliers(ticker),
axion.supplyChain.peers(ticker)
]);
// Add customers
customers.data.customers.forEach(customer => {
if (customer.ticker) {
network.set(customer.ticker, {
ticker: customer.ticker,
role: 'customer',
connections: [ticker]
});
network.get(ticker)!.connections.push(customer.ticker);
}
});
// Add suppliers
suppliers.data.suppliers.forEach(supplier => {
if (supplier.ticker) {
network.set(supplier.ticker, {
ticker: supplier.ticker,
role: 'supplier',
connections: [ticker]
});
network.get(ticker)!.connections.push(supplier.ticker);
}
});
// Add peers
peers.data.peers.forEach(peer => {
if (peer.ticker) {
network.set(peer.ticker, {
ticker: peer.ticker,
role: 'peer',
connections: [ticker]
});
network.get(ticker)!.connections.push(peer.ticker);
}
});
return network;
}
const network = await buildSupplyChainNetwork('TSLA');
console.log(`Network size: ${network.size} companies`);
console.log(`Connections: ${network.get('TSLA')?.connections.length}`);
Investment Cascade Analysis
Identify investment opportunities in supply chain:
interface CascadeOpportunity {
ticker: string;
name: string;
relationship: string;
opportunity: string;
}
async function findCascadeOpportunities(
ticker: string
): Promise<CascadeOpportunity[]> {
const opportunities: CascadeOpportunity[] = [];
// If main company is doing well, suppliers may benefit
const suppliers = await axion.supplyChain.suppliers(ticker);
suppliers.data.suppliers.forEach(supplier => {
if (supplier.ticker && supplier.dependencyLevel === 'High') {
opportunities.push({
ticker: supplier.ticker,
name: supplier.name,
relationship: 'Supplier',
opportunity: `High dependency on ${ticker} - may benefit from growth`
});
}
});
// Check customers for distribution opportunities
const customers = await axion.supplyChain.customers(ticker);
customers.data.customers.forEach(customer => {
if (customer.ticker && customer.revenuePercentage > 10) {
opportunities.push({
ticker: customer.ticker,
name: customer.name,
relationship: 'Customer',
opportunity: `Significant exposure to ${ticker} products`
});
}
});
return opportunities;
}
const opportunities = await findCascadeOpportunities('AAPL');
console.log('Supply Chain Investment Opportunities:');
opportunities.forEach(opp => {
console.log(`${opp.ticker} (${opp.name}): ${opp.opportunity}`);
});
Compare performance metrics across peers:
async function comparePeerPerformance(ticker: string) {
// Get peer companies
const peersData = await axion.supplyChain.peers(ticker);
const allCompanies = [ticker, ...peersData.data.peers.map(p => p.ticker)];
console.log(`Analyzing ${ticker} and ${peersData.data.peers.length} peers`);
// You could combine this with other APIs for deeper analysis
const peerAnalysis = peersData.data.peers.map(peer => ({
ticker: peer.ticker,
name: peer.name,
marketOverlap: peer.marketOverlap,
competitiveStrength: peer.competitiveStrength
}));
return {
focal: ticker,
peers: peerAnalysis,
totalPeers: peerAnalysis.length
};
}
const comparison = await comparePeerPerformance('NVDA');
console.log(comparison);