![llmrefs-js](https://raw.githubusercontent.com/LLMrefs/llmrefs-js/HEAD/assets/llmrefs-readme.png)

llmrefs



#### `llmrefs` is maintained by [LLMrefs](https://llmrefs.com/) - AI SEO brand visibility & LLM rank tracker. --- ## **✅ Open source AI search analytics & LLM visibility Javascript SDK** --- - Track your brand's visibility across AI search engines (LLMs) - Monitor keyword rankings and share of voice - Analyze AI-generated responses and brand mentions - Get detailed analytics for AI SEO performance - Full TypeScript support with detailed type definitions ## Installation ```bash npm install llmrefs ``` ## Quick Start ```typescript import { LLMrefs } from 'llmrefs'; // Initialize the client const llmrefs = new LLMrefs({ apiKey: 'your_api_key', // or set LLMREFS_API_KEY env variable }); // List organizations const organizations = await llmrefs.organizations.list(); // List projects for an organization const projects = await llmrefs.projects.list({ organizationId: 'org-123', }); // List keywords for a project const keywords = await llmrefs.keywords.list({ projectId: 'proj-456', organizationId: 'org-123', }); // Get detailed keyword analytics const keywordData = await llmrefs.keywords.get({ keywordId: 'kw-789', projectId: 'proj-456', organizationId: 'org-123', }); ``` ## API Reference ### Authentication Sign up for a free API key at 👉 [llmrefs.com/signup](https://llmrefs.com/signup). You can provide your API key in two ways: **1. Pass it when initializing the client:** ```typescript const llmrefs = new LLMrefs({ apiKey: 'your_api_key' }); ``` **2. Set it as an environment variable:** ```bash export LLMREFS_API_KEY=your_api_key const llmrefs = new LLMrefs(); // Will use LLMREFS_API_KEY env variable ``` ### Listing Organizations Get all organizations you have access to: ```typescript const organizations = await llmrefs.organizations.list(); console.log(organizations); // => [ // { id: 'org-1', name: 'My Organization' }, // { id: 'org-2', name: 'Another Organization' }, // ... // ] ``` ### Listing Projects Get all projects for a specific organization: ```typescript const projects = await llmrefs.projects.list({ organizationId: 'org-123', }); console.log(projects); // => [ // { id: 'proj-1', name: 'My Project', domain: 'example.com' }, // { id: 'proj-2', name: 'Another Project', domain: 'test.com' }, // ... // ] ``` ### Listing Keywords Get all active keywords for a project: ```typescript const keywords = await llmrefs.keywords.list({ organizationId: 'org-123', projectId: 'proj-456', }); console.log(keywords); // => [ // { // id: 'kw-1', // value: 'artificial intelligence', // location: 'US', // searchVolume: 10000 // }, // ... // ] ``` ### Listing Search Engines Get all available AI search engines (LLMs) tracked by LLMrefs: ```typescript const searchEngines = await llmrefs.keywords.searchEngines(); console.log(searchEngines); // => [ // { value: 'openai_chatgpt', name: 'OpenAI ChatGPT' }, // { value: 'google_ai_mode', name: 'Google AI Mode' }, // ... // ] ``` ### Listing Locations Get all available locations tracked by LLMrefs: ```typescript const locations = await llmrefs.keywords.locations(); console.log(locations); // => [ // { value: 'united_states', name: 'United States' }, // { value: 'united_kingdom', name: 'United Kingdom' }, // ... // ] ``` ### Getting Keyword Analytics Get detailed AI SEO analytics for a specific keyword: ```typescript const keywordData = await llmrefs.keywords.get({ keywordId: 'kw-789', organizationId: 'org-123', projectId: 'proj-456', filters: { searchEngines: ['openai_chatgpt', 'google_ai_mode'], // Optional: filter by specific AI search engines }, }); console.log(keywordData); // => { // id: 'kw-789', // value: 'artificial intelligence', // location: 'US', // searchVolume: 10000, // rankings: [ // { // rank: 1, // brandId: 'brand-1', // shareOfVoice: '50%', // averagePosition: '1.5', // sources: ['source1', 'source2'] // }, // ... // ], // sources: [ // { // source: 'source1', // mentionRate: '30%', // averagePosition: '2.0', // brandIds: ['brand-1'] // }, // ... // ], // responses: [ // { // prompt: 'What is artificial intelligence?', // searchEngine: 'openai_chatgpt', // text: 'AI response text...', // brandsIds: ['brand-1'], // sources: ['source1'] // }, // ... // ], // brands: [ // { id: 'brand-1', name: 'My Brand', domain: 'mybrand.com' }, // ... // ] // } ``` ## Features in Detail ### AI Search Analytics - Track your brand's visibility across multiple AI search engines (LLMs) - Monitor keyword rankings and share of voice metrics - Analyze how AI models respond to prompts surrounding your keywords topics - View search volume for keywords across AI search engines - Get insights into brand mentions and positioning ### Keyword Tracking - Monitor keyword performance across different AI platforms - Track rankings, average positions, and share of voice - Filter results by specific AI search engines - Access historical and real-time analytics data ## Error Handling The SDK throws descriptive errors for invalid API keys, failed requests, and API errors: ```typescript try { const organizations = await llmrefs.organizations.list({}); } catch (error) { console.error('Error listing organizations:', error.message); } ``` ## TypeScript Support The SDK is written in TypeScript and provides comprehensive type definitions: ```typescript import { LLMrefs, LLMrefsOptions, ListOrganizationsOptions, ListProjectsOptions, ListKeywordsOptions, GetKeywordOptions, } from 'llmrefs'; // All options are fully typed const options: GetKeywordOptions = { keywordId: 'kw-789', projectId: 'proj-456', organizationId: 'org-123', }; ``` ## Types ### LLMrefsOptions | Property | Type | Description | Required | | -------- | -------- | -------------------- | ---------------------------- | | `apiKey` | `string` | Your LLMrefs API key | `false` (if set via env var) | ### ListOrganizationsOptions No properties required. Pass an empty object `{}`. ### ListProjectsOptions | Property | Type | Description | Required | | ---------------- | -------- | --------------- | -------- | | `organizationId` | `string` | Organization ID | `true` | ### ListKeywordsOptions | Property | Type | Description | Required | | ---------------- | -------- | --------------- | -------- | | `organizationId` | `string` | Organization ID | `true` | | `projectId` | `string` | Project ID | `true` | ### GetKeywordOptions | Property | Type | Description | Required | | ----------------------- | ---------- | --------------------------------- | -------- | | `keywordId` | `string` | Keyword ID | `true` | | `organizationId` | `string` | Organization ID | `true` | | `projectId` | `string` | Project ID | `true` | | `filters` | `object` | Optional filters | `false` | | `filters.searchEngines` | `string[]` | Filter by AI search engine values | `false` | ## License Distributed under the MIT License. See LICENSE for more information. ## Links If you need support please contact us at 👉 [hello@llmrefs.com](mailto:hello@llmrefs.com) - [LLMrefs Website](https://llmrefs.com/) - [API Documentation](https://llmrefs.com/ai-seo-api) - [OpenAPI Schema](https://llmrefs.com/api/openapi.json) --- Built by [LLMrefs](https://llmrefs.com/) with ❤️, AI search analytics.