diff --git a/src/Console/Command/CategoriesTreeCommand.php b/src/Console/Command/CategoriesTreeCommand.php
new file mode 100644
index 0000000..0a61eed
--- /dev/null
+++ b/src/Console/Command/CategoriesTreeCommand.php
@@ -0,0 +1,66 @@
+setName('categories:tree')
+ ->setDescription('Show categories')
+ ->setHelp("The %command.name% show the categories");
+ }
+
+ protected function execute(InputInterface $input, OutputInterface $output)
+ {
+ $client = new Client();
+ $configLoader = new ConfigLoader();
+
+ if (!isset($configLoader->getConfig()['auth']['token'])) {
+ $output->writeln('You must login.');
+
+ return;
+ }
+
+ $client->setAuthorization($configLoader->getConfig()['auth']['token']);
+
+ try {
+ $response = $client->getCategoriesTree();
+
+ if ($response->hasError()) {
+ $output->writeln(sprintf(
+ '%s (%d)',
+ $response->getErrorMessage(),
+ $response->getErrorCode()
+ ));
+
+ return;
+ }
+
+ foreach ($response->getData() as $category) {
+ if (isset($category['name'])) {
+ $output->writeln(sprintf('%s', $category['name']));
+ }
+
+ if (!empty($category['cats'])) {
+ foreach ($category['cats'] as $subCategory) {
+ if (isset($subCategory['name'])) {
+ $output->writeln(sprintf('> %s', $subCategory['name']));
+ }
+ }
+ }
+
+ $output->writeln('');
+ }
+ } catch (ClientException $e) {
+ $output->writeln(sprintf('An error occured. %s', $e->getMessage()));
+ }
+ }
+}