Найден корректный robots.txt
Файл управления сканированием сайта роботами
?
Robots.txt указывает поисковым роботам, какие страницы сканировать, а какие — нет. Ошибки в файле могут случайно закрыть важные разделы от индексации.
Robots.txt настроен корректно. Размер файла: 12743 байт. Загружен за: 0сек.
Проверяемая страница не запрещена в robots.txt.
Показать содержимое robots.txt
# As a condition of accessing this website, you agree to abide by the following
# content signals:
# (a) If a Content-Signal = yes, you may collect content for the corresponding
# use.
# (b) If a Content-Signal = no, you may not collect content for the
# corresponding use.
# (c) If the website operator does not include a Content-Signal for a
# corresponding use, the website operator neither grants nor restricts
# permission via Content-Signal with respect to the corresponding use.
# The content signals and their meanings are:
# search: building a search index and providing search results (e.g., returning
# hyperlinks and short excerpts from your website's contents). Search does not
# include providing AI-generated search summaries.
# ai-input: inputting content into one or more AI models (e.g., retrieval
# augmented generation, grounding, or other real-time taking of content for
# generative AI search answers).
# ai-train: training or fine-tuning AI models.
# use: how AI systems may consume the content (immediate, reference, or full).
# ANY RESTRICTIONS EXPRESSED VIA CONTENT SIGNALS ARE EXPRESS RESERVATIONS OF
# RIGHTS UNDER ARTICLE 4 OF THE EUROPEAN UNION DIRECTIVE 2019/790 ON COPYRIGHT
# AND RELATED RIGHTS IN THE DIGITAL SINGLE MARKET.
# BEGIN Cloudflare Managed content
User-agent: *
Content-Signal: search=yes,ai-train=no,use=reference
Allow: /
User-agent: Amazonbot
Disallow: /
User-agent: Applebot-Extended
Disallow: /
User-agent: Bytespider
Disallow: /
User-agent: CCBot
Disallow: /
User-agent: ClaudeBot
Disallow: /
User-agent: CloudflareBrowserRenderingCrawler
Disallow: /
User-agent: Google-Extended
Disallow: /
User-agent: GPTBot
Disallow: /
User-agent: meta-externalagent
Disallow: /
# END Cloudflare Managed Content
<!doctype html>
<html lang="en">
<!-- The source was quite invisible, the ever-present voice... -->
<!-- Carini Had a Lumpy... -->
<head>
<title>Phish.net</title>
<meta charset="UTF-8"/>
<!-- ISO-8859-1 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="theme-color" content="#772953">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="X-UA-Compatible" content="IE=edge; chrome=1"/>
<!-- jive and strive -->
<meta name="application-name" content="Phish.net"/>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" crossorigin="anonymous">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<!-- javascript -->
<script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
<!-- Lucy Had a Lumpy... -->
</head>
<body style='overflow-x:hidden'>
<div style='padding-top:10px;' class='col-xs-12 col-md-12 col-lg-10 col-lg-offset-1 container-fluid'>
<div class="navbar navbar-inverse" style='background-color:#5c2040;' id="pnet-nav" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="/">
<img src="https://media.phish.net/logo/pnet5.png" style='height:40px;margin-top:-10px;' id="phishnet_logo" alt="Phish.net">
</a>
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li>
<a href="https://docs.phish.net" style='color:#fff;'>Phish.net API v5</a>
</li>
<li>
<a href="https://docs.phish.net/terms-of-use" style='color:#fff;'>Terms of Use</a>
</li>
<li>
<a href="https://phish.net/api/keys" style='color:#fff;'>API Keys</a>
</li>
</ul>
</div>
</div>
</div>
<div>
<h1>Phish.net API v5 Documentation</h1>
<h4>Table of Contents</h4>
<ul>
<li><a href="/">Getting Started</a></li>
<li><a href="/about-the-api">About the API</a><ul>
<li><a href="/about-the-api#methods">Methods</a></li>
<li><a href="/about-the-api#requestStructure">Request Structure</a></li>
<li><a href="/about-the-api#authentication">Authentication</a></li>
<li><a href="/about-the-api#parameters">Additional Parameters</a></li>
<li><a href="/about-the-api#formats">Formats</a></li>
<li><a href="/about-the-api#dataStorage">Data Storage</a></li>
<li><a href="/about-the-api#attribution">Attribution</a></li>
<li><a href="/about-the-api#credits">Credits</a></li>
</ul>
</li>
<li><a href="/examples">Example API Calls</a></li>
<li><a href="/errors">Error Messages</a></li>
<li><a href="/callbacks">Callbacks</a></li>
<li><a href="/special-methods">Special Methods</a></li>
<li><a href="https://github.com/phishnet/api-v5">Sample Project @ Github</a></li>
<li><a href="/terms-of-use">Terms of Use</a></li>
</ul>
<hr /><h2>Getting Started</h2>
<p>This guide covers basic use of the Phish.net API. It is for developers who are new to the API. It covers how to get an API key, how to send a request, how to read the response, and how to store data correctly.</p>
<p>For the full list of methods and parameters, see the <a href="/about-the-api">API reference</a>. For an AI agent or automated tool, see the <a href="https://docs.phish.net/llms.txt">llms.txt reference</a>.</p>
<h2><a name="overview"></a>What the API Does</h2>
<p>The Phish.net API returns data about Phish shows, setlists, songs, and venues. By default, the API sends data as JSON. JSON is a plain text format that most programming languages can read directly.</p>
<h2><a name="key"></a>Step 1: Get an API Key</h2>
<p>You need an API key to use the API. The key identifies your application.</p>
<ol>
<li>Go to <a href="https://phish.net/api/keys/">phish.net/api/keys</a>.</li>
<li>Sign in with your Phish.net account, or create a new account.</li>
<li>Request a new key. Give your application a name and a short description.</li>
<li>Copy the key. Keep the key private. Do not store the key in a public code repository.</li>
</ol>
<h2><a name="request"></a>Step 2: Send a Request</h2>
<p>An API request is a normal HTTPS request. You do not need a special library to send one.</p>
<p>Add your API key to the request as a query parameter named <code>apikey</code>. Attach the parameter to the end of the URL.</p>
<p>Example request URL:</p>
<p><code>https://api.phish.net/v5/shows/showdate/1997-11-22.json?apikey=YOUR_API_KEY</code></p>
<p>You can open this URL in a web browser to test it. Replace <code>YOUR_API_KEY</code> with your key.</p>
<p>Each request URL has three parts:</p>
<ol>
<li>The method name, for example <code>shows</code> or <code>setlists</code>. The method sets the type of data you get.</li>
<li>A column and a value, to filter the results. In the example above, <code>showdate</code> is the column and <code>1997-11-22</code> is the value. This part is optional.</li>
<li>The format, for example <code>.json</code>. The format sets the shape of the response.</li>
</ol>
<p>See the <a href="/about-the-api#methods">full list of methods</a> and <a href="/examples">more example requests</a>.</p>
<h2><a name="response"></a>Step 3: Read the Response</h2>
<p>A JSON response always has three fields: <code>error</code>, <code>error_message</code>, and <code>data</code>.</p>
<pre><code class="language-json">{
"error": false,
"error_message": "",
"data": [
{
"showid": 1251937496,
"showdate": "1997-11-22",
"venue": "Worcester Centrum Centre",
"city": "Worcester",
"state": "MA"
}
]
}</code></pre>
<p>Check the <code>error</code> field first.</p>
<ul>
<li>If <code>error</code> is <code>false</code>, the request succeeded. Read the results from the <code>data</code> field.</li>
<li>If <code>error</code> is not <code>false</code>, the request failed. Read the reason in <code>error_message</code>.</li>
</ul>
<p>On success, <code>error</code> is the boolean value <code>false</code>, not the number <code>0</code>. Do not test for success with a strict check like <code>error !== 0</code>. In JavaScript, for example, that check treats every successful response as a failure, because <code>false !== 0</code> is true. Test with <code>if (!data.error)</code> or <code>if (data.error === false)</code> instead.</p>
<p>The <code>data</code> field is always a list, even when it holds only one result. Write your code to loop through the list, or read the first item when you expect exactly one result.</p>
<p>A small number of request errors, such as an invalid method name, do not use this three-field format at all. These errors return a plain text body and an HTTP error status code instead. Check the HTTP status code of the response, as well as the <code>error</code> field, when you handle errors.</p>
<p>See the <a href="/errors">error code reference</a> for the full list of error codes.</p>
<h2><a name="parse"></a>Step 4: Parse the Data</h2>
<p>Most programming languages have a built-in function to parse JSON.</p>
<ul>
<li>In JavaScript, use <code>JSON.parse()</code>, or call <code>response.json()</code> after <code>fetch()</code>.</li>
<li>In Python, use <code>response.json()</code> from the <code>requests</code> library.</li>
<li>In PHP, use <code>json_decode()</code>.</li>
</ul>
<p>After you parse the response, work with the <code>data</code> field as a normal list of objects. Each item has fields that match the columns of the method you called. For example, a <code>shows</code> result has fields such as <code>showid</code>, <code>showdate</code>, and <code>venue</code>.</p>
<p>You can call the API directly from browser JavaScript with <code>fetch()</code>. No server-side proxy is required.</p>
<h2><a name="cache"></a>Step 5: Cache and Store Data</h2>
<p>Phish show data does not change often, but it can and does change. Store data on your own server or device instead of requesting it again for every page view. This practice is called caching.</p>
<p>The API itself caches its own responses for about 5 minutes. A repeat request for the same data within that time returns the same cached result. Your own cache should still store data for longer than 5 minutes, unless you're displaying a show that is currently in progress.</p>
<p>Do not cache data for longer than 24 hours. Setlists and other content can change after a show, after more thorough setlist review. Refresh your cache at least once a day so your app does not show stale data for too long.</p>
<p>Follow these rules when you cache data:</p>
<ul>
<li>Cache the results of common requests, such as a full setlist or a list of venues.</li>
<li>Refresh cached data at least once every 24 hours, even if the data seems unlikely to change.</li>
<li>Do not send the same request many times per minute. Phish.net may disable API keys that send too many requests in a short time.</li>
<li>Store your API key on the server side, for example in an environment variable. Do not put the key in client-side JavaScript code, where site visitors can read it.</li>
</ul>
<h2><a name="next"></a>Next Steps</h2>
<ul>
<li><a href="/about-the-api">Full API reference</a>: every method, parameter, and column</li>
<li><a href="/examples">Example requests</a>: more sample URLs</li>
<li><a href="/special-methods">Special methods</a>: rules for <code>attendance</code>, <code>reviews</code>, and <code>users</code></li>
<li><a href="/callbacks">Callbacks</a>: how to use JSONP in a browser</li>
<li><a href="/errors">Error codes</a>: full list of error codes</li>
<li><a href="/terms-of-use">Terms of use</a>: rules for use of the data</li>
<li><a href="https://docs.phish.net/llms.txt">llms.txt</a>: a machine-readable reference for AI agents and automated tools</li>
</ul> </div>
<footer style='margin-top:60px;padding:20px 0;border-top:1px solid #ddd;'>
<p style='text-align:center;color:#ccc;font-size:11px;'>© 2026 The Mockingbird Foundation</p>
</footer>
</body>
</html>