diff --git a/lib/Travelynx.pm b/lib/Travelynx.pm
index 3f8641d6cde74aaf37245e798b4b5e537ceee7c5..ce42cb3f02f37f7155bcf3ba898200a576a70fd2 100755
--- a/lib/Travelynx.pm
+++ b/lib/Travelynx.pm
@@ -2422,7 +2422,8 @@ sub startup {
 	  ->to( 'profile#user_status', format => undef );
 	$r->get('/ajax/status/#name')->to('profile#status_card');
 	$r->get('/ajax/status/:name/:ts')->to('profile#status_card');
-	$r->get('/p/:name')->to('profile#profile');
+	$r->get( '/p/:name' => [ format => [ 'html', 'json' ] ] )
+	  ->to( 'profile#profile', format => undef );
 	$r->get( '/p/:name/j/:id' => 'public_journey' )
 	  ->to('profile#journey_details');
 	$r->get('/.well-known/webfinger')->to('account#webfinger');
diff --git a/lib/Travelynx/Controller/Profile.pm b/lib/Travelynx/Controller/Profile.pm
index fc2d38c75896913c05c3afa8548b8460c96057ca..b2b6e03bc2f41e1a52e0b0a315a7bbb8f75b6baf 100755
--- a/lib/Travelynx/Controller/Profile.pm
+++ b/lib/Travelynx/Controller/Profile.pm
@@ -152,34 +152,46 @@ sub profile {
 		@journeys = $self->journeys->get(%opt);
 	}
 
-	$self->render(
-		'profile',
-		title            => "travelynx: $name",
-		name             => $name,
-		uid              => $user->{id},
-		privacy          => $user,
-		bio              => $profile->{bio}{html},
-		metadata         => $profile->{metadata},
-		is_self          => $is_self,
-		following        => ( $relation and $relation eq 'follows' ) ? 1 : 0,
-		follow_requested => ( $relation and $relation eq 'requests_follow' )
-		? 1
-		: 0,
-		can_follow => ( $my_user and $user->{accept_follows} and not $relation )
-		? 1
-		: 0,
-		can_request_follow =>
-		  ( $my_user and $user->{accept_follow_requests} and not $relation )
-		? 1
-		: 0,
-		follows_me => ( $inverse_relation and $inverse_relation eq 'follows' )
-		? 1
-		: 0,
-		follow_reqs_me =>
-		  ( $inverse_relation and $inverse_relation eq 'requests_follow' ) ? 1
-		: 0,
-		journey  => $status,
-		journeys => [@journeys],
+	$self->respond_to(
+		json => {
+			json => {
+				name     => $name,
+				uid      => $user->{id},
+				bio      => $profile->{bio}{html},
+				metadata => $profile->{metadata},
+				journeys => [@journeys],
+			}
+		},
+		any => {
+			template  => 'profile',
+			title     => "travelynx: $name",
+			name      => $name,
+			uid       => $user->{id},
+			privacy   => $user,
+			bio       => $profile->{bio}{html},
+			metadata  => $profile->{metadata},
+			is_self   => $is_self,
+			following => ( $relation and $relation eq 'follows' ) ? 1 : 0,
+			follow_requested => ( $relation and $relation eq 'requests_follow' )
+			? 1
+			: 0,
+			can_follow =>
+			  ( $my_user and $user->{accept_follows} and not $relation ) ? 1
+			: 0,
+			can_request_follow => (
+				$my_user and $user->{accept_follow_requests} and not $relation
+			  ) ? 1
+			: 0,
+			follows_me =>
+			  ( $inverse_relation and $inverse_relation eq 'follows' ) ? 1
+			: 0,
+			follow_reqs_me => (
+				$inverse_relation and $inverse_relation eq 'requests_follow'
+			  ) ? 1
+			: 0,
+			journey  => $status,
+			journeys => [@journeys],
+		}
 	);
 }