openapi: 3.2.0 info: title: Perigon Supplemental Endpoints API description: The Perigon API provides access to comprehensive news and web content data. To use the API, simply sign up for a Perigon Business Solutions account to obtain your API key. Your available features may vary based on your plan. See the Authentication section for details on how to use your API key. contact: name: Perigon Support url: https://docs.perigon.io/ email: data@perigon.io version: 1.0.0 servers: - url: https://api.perigon.io description: Generated server url security: - apiKeyAuth: [] tags: - name: Supplemental Endpoints description: Additional endpoints for metadata and related information paths: /v1/companies/all: get: tags: - Supplemental Endpoints summary: Companies description: Browse or search for companies Perigon tracks using name, domain, ticker symbol, industry, and more. Supports Boolean search logic and filtering by metadata such as country, exchange, employee count, and IPO date. operationId: search-companies parameters: - name: id in: query description: String Array. Filter by unique company identifiers. Multiple values create an OR filter. required: false schema: type: array items: type: string - name: symbol in: query description: String Array. Filter by company stock ticker symbols (e.g., AAPL, MSFT, GOOGL). Multiple values create an OR filter. required: false schema: type: array items: type: string - name: symbolIsin in: query description: String Array. Filter by ISIN codes on company ticker listings. Matches symbols.isin rather than the company-level ISIN. Multiple values create an OR filter. required: false schema: maxItems: 300 minItems: 0 type: array items: type: string - name: domain in: query description: String Array. Filter by company domains or websites (e.g., apple.com, microsoft.com). Multiple values create an OR filter. required: false schema: type: array items: type: string - name: country in: query description: String Array. Filter by company headquarters country. Multiple values create an OR filter. required: false schema: type: array items: type: string - name: exchange in: query description: String Array. Filter by stock exchange where companies are listed (e.g., NASDAQ, NYSE). Multiple values create an OR filter. required: false schema: type: array items: type: string - name: numEmployeesFrom in: query description: Integer. Filter for companies with at least this many employees. required: false schema: type: integer format: int32 - name: numEmployeesTo in: query description: Integer. Filter for companies with no more than this many employees. required: false schema: type: integer format: int32 - name: ipoFrom in: query description: Date. Filter for companies that went public on or after this date. Accepts ISO 8601 format (e.g., 2023-01-01T00:00:00) or yyyy-mm-dd format. required: false schema: type: string format: date-time - name: ipoTo in: query description: Date. Filter for companies that went public on or before this date. Accepts ISO 8601 format (e.g., 2023-12-31T23:59:59) or yyyy-mm-dd format. required: false schema: type: string format: date-time - name: q in: query description: String. Primary search query for filtering companies across name, alternative names, domains, and ticker symbols. Supports Boolean operators (AND, OR, NOT), exact phrases with quotes, and wildcards (* and ?) for flexible searching. required: false schema: type: string - name: name in: query description: String. Search within company names. Supports Boolean operators (AND, OR, NOT), exact phrases with quotes, and wildcards (* and ?) for flexible searching. required: false schema: type: string - name: industry in: query description: String. Filter by company industry classifications. Supports Boolean operators (AND, OR, NOT), exact phrases with quotes, and wildcards (* and ?) for flexible searching. required: false schema: type: string - name: sector in: query description: String. Filter by company sector classifications. Supports Boolean operators (AND, OR, NOT), exact phrases with quotes, and wildcards (* and ?) for flexible searching. required: false schema: type: string - name: size in: query description: Integer. The number of companies to return per page in the paginated response. required: false schema: maximum: 100 minimum: 1 type: integer format: int32 - name: page in: query description: Integer. The specific page of results to retrieve in the paginated response. Starts at 0. required: false schema: minimum: 0 type: integer format: int32 responses: '401': description: 401 - Invalid API Key content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: status: 401 message: Invalid API key. timestamp: 1681338367402 '200': description: 200 - Success content: application/json: schema: $ref: '#/components/schemas/CompanySearchResult' '500': description: 500 - Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: status: 500 message: Internal error. Please contact the support to resolve the problem. We apologize for any inconvenience :) timestamp: 1681338367402 '400': description: 400 - Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: status: 400 message: Errors during parameter validation. timestamp: 1681338367402 '403': description: 403 - Request Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: status: 403 message: The number of allowed requests is exceeded. timestamp: 1681338367402 '429': description: 429 - Too Many Requests content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: status: 429 message: Exceeded request rate limit for your account. timestamp: 1681338367402 security: - apiKeyAuth: [] /v1/journalists/all: get: tags: - Supplemental Endpoints summary: Journalists description: Search journalists using broad search attributes. Our database contains over 230,000 journalists from around the world and is refreshed frequently. operationId: search-journalists parameters: - name: id in: query description: String Array. Filter by unique journalist identifiers. Multiple values create an OR filter to find journalists matching any of the specified IDs. required: false schema: type: array items: type: string - name: q in: query description: String. Primary search query for filtering journalists based on their name, title, and Twitter bio. Supports Boolean operators (AND, OR, NOT), exact phrases with quotes, and wildcards (* and ?) for flexible searching. required: false schema: type: string - name: name in: query description: String. Search specifically within journalist names. Supports Boolean operators (AND, OR, NOT), exact phrases with quotes, and wildcards (* and ?) for flexible searching. required: false schema: type: string - name: twitter in: query description: String. Filter journalists by their exact Twitter handle, without the @ symbol. required: false schema: type: string - name: sortBy in: query description: String. Sort journalists from highest to lowest by avgMonthlyPosts, linkedinConnections, or linkedinFollowers. When omitted, results are sorted by relevance. required: false schema: $ref: '#/components/schemas/JournalistsSortBy' - name: size in: query description: Integer. The number of journalists to return per page in the paginated response. required: false schema: maximum: 1000 minimum: 0 type: integer format: int32 - name: page in: query description: Integer. The specific page of results to retrieve in the paginated response. Starts at 0. required: false schema: minimum: 0 type: integer format: int32 - name: source in: query description: String Array. Filter journalists by the publisher domains they write for. Supports wildcards (* and ?) for pattern matching (e.g., *.cnn.com). Multiple values create an OR filter. required: false schema: type: array items: type: string - name: topic in: query description: 'String Array. Filter journalists by the top topics they cover. Topics are more specific themes that the article is about. Examples of topics: ''Economy'', ''Real Estate'', ''Cryptocurrency''. If multiple parameters are passed, they will be applied as OR operations. (Searches inside the topCategories data field.)' required: false schema: type: array items: type: string - name: category in: query description: 'String Array. Filter journalists by the top categories they cover. Categories are general themes that the article is about. Examples of categories: Tech, Politics, etc. If multiple parameters are passed, they will be applied as OR operations. (Searches inside the topCategories data field.)' required: false schema: type: array items: type: string - name: label in: query description: String Array. Filter journalists by the most common label tagged to the articles they publish. This accepts labels like 'Opinion' or 'Pop Culture'. (Searches the topLabels data field.) required: false schema: type: array items: type: string - name: minMonthlyPosts in: query description: Integer. Filter for journalists who publish at least this many articles per month. Used to identify more active journalists. required: false schema: type: integer format: int32 - name: maxMonthlyPosts in: query description: Integer. Filter for journalists who publish no more than this many articles per month. required: false schema: type: integer format: int32 - name: country in: query description: String Array. Filter journalists by countries they commonly cover in their reporting. Uses ISO 3166-1 alpha-2 two-letter country codes in lowercase (e.g., us, gb, jp). Multiple values create an OR filter. required: false schema: type: array items: type: string - name: locationCountry in: query description: String Array. Filter journalists by their profile location country (`locations.country`). Uses ISO 3166-1 alpha-2 two-letter country codes in lowercase (e.g., us, gb, jp). `uk` is accepted as an alias for `gb`. Distinct from `country`, which filters reporting focus (`topCountries`). Multiple values create an OR filter. required: false schema: type: array items: type: string - name: locationState in: query description: String Array. Filter journalists by their profile location state or region (`locations.state`). For US locations this is the two-letter state code (e.g., NY, CA). Multiple values create an OR filter. required: false schema: type: array items: type: string - name: locationCounty in: query description: String Array. Filter journalists by their profile location county (`locations.county`). County names should match stored metadata (e.g., 'Los Angeles County', 'Cook County'). Multiple values create an OR filter. required: false schema: type: array items: type: string - name: locationCity in: query description: String Array. Filter journalists by their profile location city (`locations.city`). Multiple values create an OR filter. required: false schema: type: array items: type: string - name: locationArea in: query description: String Array. Filter journalists by their profile location area — neighborhood, borough, or district (`locations.area`). Multiple values create an OR filter. required: false schema: type: array items: type: string - name: updatedAtFrom in: query description: Date. Filter for journalist profiles updated on or after this date. Accepts ISO 8601 format (e.g., 2023-03-01T00:00:00) or yyyy-mm-dd format. required: false schema: type: string format: date-time - name: updatedAtTo in: query description: Date. Filter for journalist profiles updated on or before this date. Accepts ISO 8601 format (e.g., 2023-03-01T23:59:59) or yyyy-mm-dd format. required: false schema: type: string format: date-time - name: showNumResults in: query description: Boolean. Controls whether to return the exact result count. When false (default), counts are capped at 10,000 for performance reasons. Set to true for precise counts in smaller result sets. required: false schema: type: boolean responses: '401': description: 401 - Invalid API Key content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: status: 401 message: Invalid API key. timestamp: 1681338367402 '500': description: 500 - Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: status: 500 message: Internal error. Please contact the support to resolve the problem. We apologize for any inconvenience :) timestamp: 1681338367402 '200': description: 200 - Success content: application/json: schema: $ref: '#/components/schemas/JournalistSearchResult' '400': description: 400 - Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: status: 400 message: Errors during parameter validation. timestamp: 1681338367402 '403': description: 403 - Request Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: status: 403 message: The number of allowed requests is exceeded. timestamp: 1681338367402 '429': description: 429 - Too Many Requests content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: status: 429 message: Exceeded request rate limit for your account. timestamp: 1681338367402 security: - apiKeyAuth: [] /v1/journalists/{id}: get: tags: - Supplemental Endpoints summary: Journalists by ID description: Find additional details on a journalist by using the journalist ID found in an article response object. operationId: get-journalist-by-id parameters: - name: id in: path required: true schema: type: string responses: '401': description: 401 - Invalid API Key content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: status: 401 message: Invalid API key. timestamp: 1681338367402 '404': description: 404 - Resource Not Found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: status: 404 message: Journalist not found timestamp: 1681338367402 '500': description: 500 - Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: status: 500 message: Internal error. Please contact the support to resolve the problem. We apologize for any inconvenience :) timestamp: 1681338367402 '200': description: 200 - Success content: application/json: schema: $ref: '#/components/schemas/Journalist' example: id: dd9518041aa146e8bb46bedd30a5d985 name: Matt Levine fullName: Matt Levine headline: Columnist at Bloomberg Opinion description: I do not read or respond to LinkedIn messages. title: Columnist locations: [] updatedAt: '2025-08-03T05:58:29.174946+00:00' topTopics: - name: NHL count: 629 - name: NBA count: 599 - name: Basketball count: 432 - name: Sports Figures count: 300 - name: Hockey count: 165 - name: Edmonton Oilers count: 140 - name: Los Angeles Lakers count: 120 - name: New York Knicks count: 54 - name: Stanley Cup count: 53 - name: MLB count: 50 topSources: - name: yardbarker.com count: 411 - name: athlonsports.com count: 395 - name: sports.yahoo.com count: 189 - name: newsweek.com count: 188 - name: twsn.net count: 185 - name: si.com count: 174 - name: wenatcheeworld.com count: 63 - name: bloomberg.com count: 50 - name: news.bloomberglaw.com count: 50 - name: dodgersnation.com count: 4 topCategories: - name: Sports count: 1530 - name: Finance count: 30 - name: Tech count: 11 - name: Entertainment count: 10 - name: Politics count: 9 - name: Business count: 6 - name: Auto count: 3 - name: Health count: 3 - name: General count: 2 - name: Lifestyle count: 1 topLabels: - name: Non-news count: 447 - name: Low Content count: 67 - name: Opinion count: 53 - name: Roundup count: 3 - name: Pop Culture count: 2 topCountries: - name: us count: 1550 - name: si count: 162 avgMonthlyPosts: 570 twitterHandle: matt_levine twitterBio: lunch valuation analyst imageUrl: https://journalists-api-assets.s3.amazonaws.com/images/dd9518041aa146e8bb46bedd30a5d985.jpg linkedinUrl: https://linkedin.com/in/mattlevine2 linkedinConnections: 1291 linkedinFollowers: 10197 facebookUrl: https://www.facebook.com/mslevine instagramUrl: https://www.instagram.com/matt_levine_51/ websiteUrl: https://t.co/QdrnCc9VfL blogUrl: null tumblrUrl: http://itsathingandyoucandoit.tumblr.com youtubeUrl: null '400': description: 400 - Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: status: 400 message: Errors during parameter validation. timestamp: 1681338367402 '403': description: 403 - Request Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: status: 403 message: The number of allowed requests is exceeded. timestamp: 1681338367402 '429': description: 429 - Too Many Requests content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: status: 429 message: Exceeded request rate limit for your account. timestamp: 1681338367402 security: - apiKeyAuth: [] /v1/people/all: get: tags: - Supplemental Endpoints summary: People description: Search and retrieve additional information on known persons that exist within Perigon's entity database and as referenced in any article response object. Our database contains over 650,000 people from around the world and is refreshed frequently. People data is derived from Wikidata and includes a wikidataId field that can be used to lookup even more information on Wikidata's website. operationId: search-people parameters: - name: name in: query description: String. Search by person's name. Supports Boolean operators (AND, OR, NOT), exact phrases with quotes, and wildcards (* and ?) for flexible searching. required: false schema: type: string - name: wikidataId in: query description: String Array. Filter by Wikidata entity IDs (e.g., Q7747, Q937). These are unique identifiers from Wikidata.org that precisely identify public figures and eliminate name ambiguity. Multiple values create an OR filter. required: false schema: type: array items: type: string - name: occupationId in: query description: String Array. Filter by Wikidata occupation IDs (e.g., Q82955 for politician, Q33999 for actor, Q19546 for businessman). Finds people with specific professions. Multiple values create an OR filter. required: false schema: type: array items: type: string - name: occupationLabel in: query description: String. Search by occupation name (e.g., politician, actor, CEO, athlete). Supports Boolean operators (AND, OR, NOT), exact phrases with quotes, and wildcards (* and ?) for flexible searching. required: false schema: type: string - name: page in: query description: Integer. The specific page of results to retrieve in the paginated response. Starts at 0. required: false schema: minimum: 0 type: integer format: int32 - name: size in: query description: Integer. The number of people to return per page in the paginated response. required: false schema: maximum: 100 minimum: 1 type: integer format: int32 responses: '401': description: 401 - Invalid API Key content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: status: 401 message: Invalid API key. timestamp: 1681338367402 '500': description: 500 - Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: status: 500 message: Internal error. Please contact the support to resolve the problem. We apologize for any inconvenience :) timestamp: 1681338367402 '200': description: 200 - Success content: application/json: schema: $ref: '#/components/schemas/PeopleSearchResult' '400': description: 400 - Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: status: 400 message: Errors during parameter validation. timestamp: 1681338367402 '403': description: 403 - Request Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: status: 403 message: The number of allowed requests is exceeded. timestamp: 1681338367402 '429': description: 429 - Too Many Requests content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: status: 429 message: Exceeded request rate limit for your account. timestamp: 1681338367402 security: - apiKeyAuth: [] /v1/sources/all: get: tags: - Supplemental Endpoints summary: Sources description: Search and filter the 200,000+ media sources available via the Perigon API. The result includes a list of individual media sources that were matched to your specific criteria. operationId: search-sources parameters: - name: domain in: query description: String Array. Filter by specific publisher domains or subdomains. Supports wildcards (* and ?) for pattern matching (e.g., *.cnn.com, us?.nytimes.com). Multiple values create an OR filter. required: false schema: type: array items: type: string - name: name in: query description: String. Search by source name or alternative names. Supports Boolean operators (AND, OR, NOT), exact phrases with quotes, and wildcards (* and ?) for flexible searching. required: false schema: type: string - name: sourceGroup in: query description: String. Filter by predefined publisher bundles (e.g., top100, top50tech). Returns all sources within the specified group. See documentation for available source groups. required: false schema: type: string - name: sortBy in: query description: String. Determines the source sorting order. Options include relevance (default, best match to query), globalRank (by overall traffic and popularity), monthlyVisits (by total monthly visitor count), and avgMonthlyPosts (by number of articles published monthly). required: false schema: $ref: '#/components/schemas/SourcesSortBy' - name: page in: query description: Integer. The specific page of results to retrieve in the paginated response. Starts at 0. required: false schema: maximum: 10000 minimum: 0 type: integer format: int32 - name: size in: query description: Integer. The number of sources to return per page in the paginated response. required: false schema: maximum: 100 minimum: 1 type: integer format: int32 - name: minMonthlyVisits in: query description: Integer. Filter for sources with at least this many monthly visitors. Used to target publishers by audience size. required: false schema: type: integer format: int64 - name: maxMonthlyVisits in: query description: Integer. Filter for sources with no more than this many monthly visitors. Used to target publishers by audience size. required: false schema: type: integer format: int64 - name: minMonthlyPosts in: query description: Integer. Filter for sources that publish at least this many articles per month. Used to target publishers by content volume. required: false schema: type: integer format: int64 - name: maxMonthlyPosts in: query description: Integer. Filter for sources that publish no more than this many articles per month. Used to target publishers by content volume. required: false schema: type: integer format: int64 - name: country in: query description: String Array. Filter sources by countries they commonly cover in their reporting. Uses ISO 3166-1 alpha-2 two-letter country codes in lowercase (e.g., us, gb, jp). See documentation for supported country codes. Multiple values create an OR filter. required: false schema: type: array items: type: string - name: sourceCountry in: query description: String Array. Filter for local publications based in specific countries. Uses ISO 3166-1 alpha-2 two-letter country codes in lowercase (e.g., us, gb, jp). See documentation for supported country codes. Multiple values create an OR filter. required: false schema: type: array items: type: string - name: sourceState in: query description: String Array. Filter for local publications based in specific states or regions. Uses standard two-letter state codes in lowercase (e.g., ca, ny, tx). See documentation for supported state codes. Multiple values create an OR filter. required: false schema: type: array items: type: string - name: sourceCounty in: query description: String Array. Filter for local publications based in specific counties. Multiple values create an OR filter. required: false schema: type: array items: type: string - name: sourceCity in: query description: String Array. Filter for local publications based in specific cities. Multiple values create an OR filter. required: false schema: type: array items: type: string - name: sourceLat in: query description: Float. Latitude coordinate for filtering local publications by geographic proximity. Used with sourceLon and sourceMaxDistance for radius search. required: false schema: maximum: 90 minimum: -90 type: number format: double - name: sourceLon in: query description: Float. Longitude coordinate for filtering local publications by geographic proximity. Used with sourceLat and sourceMaxDistance for radius search. required: false schema: maximum: 180 minimum: -180 type: number format: double - name: sourceMaxDistance in: query description: Float. Maximum distance in kilometers from the coordinates defined by sourceLat and sourceLon. Defines the radius for local publication searches. required: false schema: maximum: 300 minimum: 1 type: number format: double - name: category in: query description: String Array. Filter sources by their primary content categories such as Politics, Tech, Sports, Business, or Finance. Returns sources that frequently cover these topics. Multiple values create an OR filter. required: false schema: type: array items: type: string - name: topic in: query description: String Array. Filter sources by their frequently covered topics (e.g., Markets, Cryptocurrency, Climate Change). Returns sources where the specified topic is among their top 10 covered areas. Multiple values create an OR filter. required: false schema: type: array items: type: string - name: label in: query description: String Array. Filter sources by their content label patterns (e.g., Opinion, Paid-news, Non-news). Returns sources where the specified label is common in their published content. See documentation for all available labels. Multiple values create an OR filter. required: false schema: type: array items: type: string - name: paywall in: query description: Boolean. Filter by paywall status. Set to true to find sources with paywalls, or false to find sources without paywalls. required: false schema: type: boolean - name: showSubdomains in: query description: Boolean. Controls whether subdomains are included as separate results. When true (default), subdomains appear as distinct sources. When false, results are consolidated to parent domains only. required: false schema: type: boolean - name: showNumResults in: query description: Boolean. Controls whether to return the exact result count. When false (default), counts are capped at 10,000 for performance reasons. Set to true for precise counts in smaller result sets. required: false schema: type: boolean responses: '401': description: 401 - Invalid API Key content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: status: 401 message: Invalid API key. timestamp: 1681338367402 '200': description: 200 - Success content: application/json: schema: $ref: '#/components/schemas/SourceSearchResult' '500': description: 500 - Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: status: 500 message: Internal error. Please contact the support to resolve the problem. We apologize for any inconvenience :) timestamp: 1681338367402 '400': description: 400 - Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: status: 400 message: Errors during parameter validation. timestamp: 1681338367402 '403': description: 403 - Request Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: status: 403 message: The number of allowed requests is exceeded. timestamp: 1681338367402 '429': description: 429 - Too Many Requests content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: status: 429 message: Exceeded request rate limit for your account. timestamp: 1681338367402 security: - apiKeyAuth: [] /v1/topics/all: get: tags: - Supplemental Endpoints summary: Topics description: Search through all available Topics that exist within the Perigon Database. operationId: search-topics parameters: - name: name in: query description: String. Search for topics by exact name or partial text match. Does not support wildcards. Examples include Markets, Cryptocurrency, Climate Change, etc. required: false schema: type: string - name: category in: query description: String. Filter topics by broad article categories such as Politics, Tech, Sports, Business, Finance, Entertainment, etc. required: false schema: type: string - name: subcategory in: query description: String. Filter topics by their specific subcategory. Subcategories provide more granular classification beyond the main category, such as TV or Event. required: false schema: type: string - name: page in: query description: Integer. The specific page of results to retrieve in the paginated response. Starts at 0. required: false schema: minimum: 0 type: integer format: int32 - name: size in: query description: Integer. The number of topics to return per page in the paginated response. required: false schema: minimum: 0 type: integer format: int32 responses: '401': description: 401 - Invalid API Key content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: status: 401 message: Invalid API key. timestamp: 1681338367402 '500': description: 500 - Server Error content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: status: 500 message: Internal error. Please contact the support to resolve the problem. We apologize for any inconvenience :) timestamp: 1681338367402 '200': description: 200 - Success content: application/json: schema: $ref: '#/components/schemas/TopicSearchResult' '400': description: 400 - Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: status: 400 message: Errors during parameter validation. timestamp: 1681338367402 '403': description: 403 - Request Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: status: 403 message: The number of allowed requests is exceeded. timestamp: 1681338367402 '429': description: 429 - Too Many Requests content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' example: status: 429 message: Exceeded request rate limit for your account. timestamp: 1681338367402 security: - apiKeyAuth: [] components: schemas: Source: type: object properties: articleId: type: - string - 'null' description: Perigon article ID of the supporting source, when available. url: type: - string - 'null' description: URL of the supporting source, when available. title: type: - string - 'null' description: Title of the supporting source, when available. description: Sources used to populate the field. ErrorResponse: type: object properties: status: type: - integer - 'null' format: int32 message: type: - string - 'null' timestamp: type: - integer - 'null' format: int64 JournalistSearchResult: required: - numResults - results - status type: object properties: status: type: integer format: int32 numResults: type: integer format: int64 results: type: array items: $ref: '#/components/schemas/Journalist' description: Journalist search result example: status: 200 numResults: 10000 results: - id: dd9518041aa146e8bb46bedd30a5d985 name: Matt Levine fullName: Matt Levine headline: Columnist at Bloomberg Opinion description: I do not read or respond to LinkedIn messages. title: Columnist locations: [] updatedAt: '2025-08-03T05:58:29.174946+00:00' topTopics: - name: NHL count: 629 - name: NBA count: 599 - name: Basketball count: 432 - name: Sports Figures count: 300 - name: Hockey count: 165 - name: Edmonton Oilers count: 140 - name: Los Angeles Lakers count: 120 - name: New York Knicks count: 54 - name: Stanley Cup count: 53 - name: MLB count: 50 topSources: - name: yardbarker.com count: 411 - name: athlonsports.com count: 395 - name: sports.yahoo.com count: 189 - name: newsweek.com count: 188 - name: twsn.net count: 185 - name: si.com count: 174 - name: wenatcheeworld.com count: 63 - name: bloomberg.com count: 50 - name: news.bloomberglaw.com count: 50 - name: dodgersnation.com count: 4 topCategories: - name: Sports count: 1530 - name: Finance count: 30 - name: Tech count: 11 - name: Entertainment count: 10 - name: Politics count: 9 - name: Business count: 6 - name: Auto count: 3 - name: Health count: 3 - name: General count: 2 - name: Lifestyle count: 1 topLabels: - name: Non-news count: 447 - name: Low Content count: 67 - name: Opinion count: 53 - name: Roundup count: 3 - name: Pop Culture count: 2 topCountries: - name: us count: 1550 - name: si count: 162 avgMonthlyPosts: 570 twitterHandle: matt_levine twitterBio: lunch valuation analyst imageUrl: https://journalists-api-assets.s3.amazonaws.com/images/dd9518041aa146e8bb46bedd30a5d985.jpg linkedinUrl: https://linkedin.com/in/mattlevine2 linkedinConnections: 1291 linkedinFollowers: 10197 facebookUrl: https://www.facebook.com/mslevine instagramUrl: https://www.instagram.com/matt_levine_51/ websiteUrl: https://t.co/QdrnCc9VfL blogUrl: null tumblrUrl: http://itsathingandyoucandoit.tumblr.com youtubeUrl: null CompanySearchResult: required: - numResults - results - status type: object properties: status: type: integer format: int32 numResults: type: integer format: int64 results: type: array items: $ref: '#/components/schemas/Company' description: Company search result example: status: 200 numResults: 89660 results: - id: eeee660a046242b8bf99f45fdc95cc32 name: Tesla, Inc. updatedAt: '2025-08-02T06:28:15.799842+00:00' altNames: - Tesla domains: - tesla.com monthlyVisits: 24914157 globalRank: 1322 description: Tesla, Inc. designs, develops, manufactures, leases, and sells electric vehicles, and energy generation and storage systems in the United States, China, and internationally. It operates in two segments, Automotive, and Energy Generation and Storage. The Automotive segment offers electric vehicles, as well as sells automotive regulatory credits; and non-warranty after-sales vehicle, used vehicles, retail merchandise, and vehicle insurance services. This segment also provides sedans and sport utility vehicles through direct and used vehicle sales, a network of Tesla Superchargers, and in-app upgrades; purchase financing and leasing services; services for electric vehicles through its company-owned service locations and Tesla mobile service technicians; and vehicle limited warranties and extended service plans. The Energy Generation and Storage segment engages in the design, manufacture, installation, sale, and leasing of solar energy generation and energy storage products, and related services to residential, commercial, and industrial customers and utilities through its website, stores, and galleries, as well as through a network of channel partners; and provision of service and repairs to its energy product customers, including under warranty, as well as various financing options to its solar customers. The company was formerly known as Tesla Motors, Inc. and changed its name to Tesla, Inc. in February 2017. Tesla, Inc. was incorporated in 2003 and is headquartered in Austin, Texas. ceo: Elon R. Musk industry: Auto - Manufacturers sector: Consumer Cyclical country: us fullTimeEmployees: 125665 address: 1 Tesla Road city: Austin state: TX zip: '78725' logo: https://company-api-assets.s3.us-east-2.amazonaws.com/images/TSLA.jpg favicon: https://company-api-assets.s3.us-east-2.amazonaws.com/favicons/eeee660a046242b8bf99f45fdc95cc32.ico isEtf: false isActivelyTrading: true isFund: false isAdr: false symbols: - symbol: TSLA exchange: NASDAQ Global Select exchangeShortName: NASDAQ ipoDate: '2010-06-29' - symbol: TL0.DE exchange: XETRA exchangeShortName: XETRA ipoDate: '2010-06-29' naics: '8111' sic: '7538' yearFounded: 2003 revenue: over-1b webResources: careers: null about: null blog: null events: null sitemap: null updates: null linkedin: https://www.linkedin.com/company/15564 facebook: https://www.facebook.com/tesla/ instagram: null medium: null reddit: null threads: null tiktok: null x: http://www.twitter.com/tesla wellfound: http://angel.co/tesla-motors youtube: null wikipedia: null WebResources: type: object properties: careers: type: - string - 'null' about: type: - string - 'null' blog: type: - string - 'null' events: type: - string - 'null' sitemap: type: - string - 'null' updates: type: - string - 'null' linkedin: type: - string - 'null' facebook: type: - string - 'null' instagram: type: - string - 'null' medium: type: - string - 'null' reddit: type: - string - 'null' threads: type: - string - 'null' tiktok: type: - string - 'null' x: type: - string - 'null' wellfound: type: - string - 'null' youtube: type: - string - 'null' wikipedia: type: - string - 'null' LocationHolder: type: object properties: country: type: - string - 'null' description: Country central to the article. state: type: - string - 'null' description: State or region central to the article. county: type: - string - 'null' description: County central to the article. city: type: - string - 'null' description: City central to the article. area: type: - string - 'null' description: Neighborhood, borough, or district central to the article. description: Locations most strongly associated with the story. TopicSearchResult: required: - data - total type: object properties: total: type: integer format: int64 data: type: array items: $ref: '#/components/schemas/TopicDto' description: Topic search result example: total: 901 data: - id: 42 createdAt: '2023-12-15T13:54:06.556208Z' updatedAt: '2023-12-15T13:54:06.556213Z' name: AI labels: category: Broad subcategory: Tech TopicDto: type: object properties: id: type: - integer - 'null' format: int32 createdAt: type: - string - 'null' format: date-time updatedAt: type: - string - 'null' format: date-time name: type: - string - 'null' labels: allOf: - $ref: '#/components/schemas/TopicLabels' NameCount: type: object properties: name: type: - string - 'null' description: Name of the aggregated value. count: type: - integer - 'null' description: Number of matching records for the value. format: int64 description: Countries most frequently associated with the journalist's articles. SourcesSortBy: type: string enum: - globalRank - relevance - monthlyVisits - avgMonthlyPosts WikidataPositionHolder: type: object properties: wikidataId: type: - string - 'null' label: type: - string - 'null' startTime: allOf: - $ref: '#/components/schemas/WikidataDateHolder' endTime: allOf: - $ref: '#/components/schemas/WikidataDateHolder' employer: allOf: - $ref: '#/components/schemas/WikidataLabelHolder' WikidataDateHolder: type: object properties: time: type: - string - 'null' precision: type: - string - 'null' WikidataLabelHolder: type: object properties: wikidataId: type: - string - 'null' label: type: - string - 'null' ImageHolder: type: object properties: url: type: - string - 'null' Company: type: object properties: id: type: - string - 'null' name: type: - string - 'null' updatedAt: type: - string - 'null' primaryRecordId: type: - string - 'null' altNames: type: - array - 'null' items: type: string domains: type: - array - 'null' items: type: string monthlyVisits: type: - integer - 'null' format: int64 globalRank: type: - integer - 'null' format: int32 description: type: - string - 'null' ceo: type: - string - 'null' industry: type: - string - 'null' sector: type: - string - 'null' country: type: - string - 'null' fullTimeEmployees: type: - integer - 'null' format: int32 address: type: - string - 'null' city: type: - string - 'null' state: type: - string - 'null' zip: type: - string - 'null' logo: type: - string - 'null' favicon: type: - string - 'null' isEtf: type: - boolean - 'null' isActivelyTrading: type: - boolean - 'null' isFund: type: - boolean - 'null' isAdr: type: - boolean - 'null' symbols: type: - array - 'null' items: $ref: '#/components/schemas/SymbolHolder' naics: type: - string - 'null' sic: type: - string - 'null' cusip: type: - string - 'null' cik: type: - string - 'null' isin: type: - string - 'null' yearFounded: type: - integer - 'null' format: int32 revenue: type: - string - 'null' webResources: allOf: - $ref: '#/components/schemas/WebResources' Journalist: type: object properties: id: type: - string - 'null' description: Unique Perigon identifier for the journalist. primaryRecordId: type: - string - 'null' name: type: - string - 'null' description: Common display name of the journalist. fullName: type: - string - 'null' description: Full name of the journalist. headline: type: - string - 'null' description: Professional headline associated with the journalist. description: type: - string - 'null' description: Biographical description of the journalist. title: type: - string - 'null' description: Professional title of the journalist. email: type: - string - 'null' description: Journalist's email. locations: type: - array - 'null' description: Locations associated with the journalist. items: $ref: '#/components/schemas/LocationHolder' updatedAt: type: - string - 'null' description: Date and time the journalist record was last refreshed, in ISO 8601 format. topTopics: type: - array - 'null' description: Topics most frequently covered by the journalist. items: $ref: '#/components/schemas/NameCount' topSources: type: - array - 'null' description: Publishers most frequently associated with the journalist. items: $ref: '#/components/schemas/NameCount' topCategories: type: - array - 'null' description: Categories most frequently covered by the journalist. items: $ref: '#/components/schemas/NameCount' topLabels: type: - array - 'null' description: Editorial labels most frequently associated with the journalist's articles. items: $ref: '#/components/schemas/NameCount' topCountries: type: - array - 'null' description: Countries most frequently associated with the journalist's articles. items: $ref: '#/components/schemas/NameCount' avgMonthlyPosts: type: - integer - 'null' description: Average number of articles published by the journalist per month. format: int32 twitterHandle: type: - string - 'null' description: Journalist's X or Twitter handle. twitterBio: type: - string - 'null' description: Biography from the journalist's X or Twitter profile. imageUrl: type: - string - 'null' description: Profile image URL for the journalist. linkedinUrl: type: - string - 'null' description: LinkedIn profile URL for the journalist. linkedinConnections: type: - integer - 'null' description: LinkedIn connection count for the journalist, when available. format: int32 linkedinFollowers: type: - integer - 'null' description: LinkedIn follower count for the journalist, when available. format: int32 facebookUrl: type: - string - 'null' description: Facebook profile URL for the journalist. instagramUrl: type: - string - 'null' description: Instagram profile URL for the journalist. websiteUrl: type: - string - 'null' description: Personal or professional website URL for the journalist. blogUrl: type: - string - 'null' description: Blog URL for the journalist. tumblrUrl: type: - string - 'null' description: Tumblr profile URL for the journalist. youtubeUrl: type: - string - 'null' description: YouTube channel URL for the journalist. description: Expanded journalist details, when requested and available. PeopleSearchResult: required: - numResults - results - status type: object properties: status: type: integer format: int32 numResults: type: integer format: int64 results: type: array items: $ref: '#/components/schemas/Person' description: Person search result example: status: 200 numResults: 773198 results: - wikidataId: Q317521 updatedAt: '2025-08-06T05:17:13.358689+00:00' name: Elon Musk gender: wikidataId: Q6581097 label: male dateOfBirth: time: '1971-06-28T00:00:00+00:00' precision: day dateOfDeath: null description: South African-Canadian-American businessman, engineer, inventor and political figure aliases: - Elon Reeve Musk occupation: - wikidataId: Q5482740 label: programmer - wikidataId: Q81096 label: engineer - wikidataId: Q131524 label: entrepreneur - wikidataId: Q557880 label: investor - wikidataId: Q43845 label: businessperson - wikidataId: Q82955 label: politician - wikidataId: Q212238 label: civil servant - wikidataId: Q133253419 label: technology entrepreneur - wikidataId: Q205375 label: inventor position: - wikidataId: Q484876 label: chief executive officer startTime: time: '2002-01-01T00:00:00+00:00' precision: year endTime: null employer: null - wikidataId: Q140686 label: chairperson startTime: time: '2008-01-01T00:00:00+00:00' precision: year endTime: time: '2018-11-01T00:00:00+00:00' precision: month employer: null - wikidataId: Q484876 label: chief executive officer startTime: time: '2008-10-01T00:00:00+00:00' precision: month endTime: null employer: null - wikidataId: Q105490190 label: co-president startTime: time: '2016-07-01T00:00:00+00:00' precision: month endTime: null employer: null - wikidataId: Q484876 label: chief executive officer startTime: time: '2022-10-28T00:00:00+00:00' precision: day endTime: time: '2023-06-05T00:00:00+00:00' precision: day employer: null - wikidataId: Q7450652 label: Senior Advisor to the President of the United States startTime: time: '2025-01-20T00:00:00+00:00' precision: day endTime: time: '2025-05-30T00:00:00+00:00' precision: day employer: null politicalParty: - wikidataId: Q135219011 label: America Party startTime: null endTime: null image: url: https://people-api-assets.s3.amazonaws.com/images/wikidata/Q317521.jpg abstract: Elon Reeve Musk is a businessman. He is known for his leadership of Tesla, SpaceX, X, and the Department of Government Efficiency (DOGE). Musk has been considered the wealthiest person in the world since 2021; as of May 2025, Forbes estimates his net worth to be US$424.7 billion. TopicLabels: type: object properties: category: type: - string - 'null' subcategory: type: - string - 'null' JournalistsSortBy: type: string enum: - avgMonthlyPosts - linkedinConnections - linkedinFollowers SourceSearchResult: required: - numResults - results - status type: object properties: status: type: integer format: int32 numResults: type: integer format: int64 results: type: array items: $ref: '#/components/schemas/Source' description: Source search result example: status: 200 numResults: 10000 results: - id: 372f1eb953ba4c9cbd3830c47db3342a domain: cnn.com name: CNN updatedAt: '2025-08-10T00:30:03.716477+00:00' altNames: - CNN.com - CNN News - anderson - anderson cooper - CNN .com - wolf blitzer - erin burnett - don lemon - chris cuomo - jake tapper - brooke baldwin - dana bash - democrat - democratic - liberal description: CNN is a major U.S.-based media organization that provides coverage of world news, weather, entertainment, politics, and health. avgMonthlyPosts: 3129 paywall: false location: country: us state: NY city: New York coordinates: lat: 40.7127281 lon: -74.0060152 topCategories: - name: Politics count: 1218 - name: General count: 801 - name: Entertainment count: 545 - name: Lifestyle count: 239 - name: Business count: 237 - name: Sports count: 233 - name: World count: 209 - name: Health count: 147 - name: Travel count: 135 - name: Tech count: 101 topTopics: - name: TV count: 331 - name: Podcasts count: 328 - name: Russia-Ukraine War count: 151 - name: US Politics count: 142 - name: Crime count: 126 - name: Media count: 91 - name: Social Issues count: 85 - name: Markets count: 69 - name: Middle East count: 68 - name: Epstein Case count: 61 topCountries: - name: us count: 3153 topLabels: - name: Non-news count: 394 - name: Roundup count: 327 - name: Paid News count: 183 - name: Opinion count: 127 - name: Feed count: 41 - name: Pop Culture count: 32 - name: Low Content count: 29 - name: Fact Check count: 4 avgBiasRating: leansLeft adFontesBiasRating: Leans Left allSidesBiasRating: Leans Left mbfcBiasRating: Left monthlyVisits: 471591456 globalRank: 86 logoLarge: url: https://storage.googleapis.com/dev-dispatch-276213.appspot.com/CNN_Reg_1d0c9bc5eb/CNN-Reg_CNN_Reg_1d0c9bc5eb.png logoFavIcon: url: https://storage.googleapis.com/dev-dispatch-276213.appspot.com/CNN_Fav_Icon_5d54dfad8c/CNN-FavIcon_CNN_Fav_Icon_5d54dfad8c.png logoSquare: url: https://storage.googleapis.com/dev-dispatch-276213.appspot.com/CNN_Square_e9ef9ce7a8/CNN-Square_CNN_Square_e9ef9ce7a8.png Person: type: object properties: wikidataId: type: - string - 'null' createdAt: type: - string - 'null' updatedAt: type: - string - 'null' name: type: - string - 'null' gender: allOf: - $ref: '#/components/schemas/WikidataLabelHolder' dateOfBirth: allOf: - $ref: '#/components/schemas/WikidataDateHolder' dateOfDeath: allOf: - $ref: '#/components/schemas/WikidataDateHolder' description: type: - string - 'null' aliases: type: - array - 'null' items: type: string occupation: type: - array - 'null' items: $ref: '#/components/schemas/WikidataLabelHolder' position: type: - array - 'null' items: $ref: '#/components/schemas/WikidataPositionHolder' politicalParty: type: - array - 'null' items: $ref: '#/components/schemas/WikidataPoliticalPartyHolder' image: allOf: - $ref: '#/components/schemas/ImageHolder' abstract: type: - string - 'null' SymbolHolder: type: object properties: symbol: type: - string - 'null' exchange: type: - string - 'null' exchangeShortName: type: - string - 'null' ipoDate: type: - string - 'null' isin: type: - string - 'null' cusip: type: - string - 'null' WikidataPoliticalPartyHolder: type: object properties: wikidataId: type: - string - 'null' label: type: - string - 'null' startTime: allOf: - $ref: '#/components/schemas/WikidataDateHolder' endTime: allOf: - $ref: '#/components/schemas/WikidataDateHolder' securitySchemes: apiKeyAuth: type: http scheme: bearer