Index: frontend/src/components/search/SongResult.tsx
===================================================================
--- frontend/src/components/search/SongResult.tsx	(revision cb4a1da079608fdb022036c90eb6e41f26046827)
+++ frontend/src/components/search/SongResult.tsx	(revision 8675f753d9112b6cb048c0ac8229113e26a4db35)
@@ -1,2 +1,4 @@
+import { useNavigate } from "react-router-dom";
+import { usePlayer } from "../../context/playerContext";
 import type { Song } from "../../utils/types";
 
@@ -5,7 +7,32 @@
 }
 
+const toEmbedUrl = (url: string): string => {
+	try {
+		const parsed = new URL(url);
+		if (
+			(parsed.hostname === "www.youtube.com" ||
+				parsed.hostname === "youtube.com") &&
+			parsed.searchParams.has("v")
+		) {
+			return `https://www.youtube.com/embed/${parsed.searchParams.get("v")}`;
+		}
+		if (parsed.hostname === "youtu.be") {
+			return `https://www.youtube.com/embed${parsed.pathname}`;
+		}
+		return url;
+	} catch {
+		return url;
+	}
+};
+
 const SongResult = ({ song }: SongResultProps) => {
+	const navigate = useNavigate();
+	const { play, currentSong } = usePlayer();
+
 	return (
-		<div className="flex items-center gap-4 p-3 rounded-lg hover:bg-white/5 cursor-pointer transition-colors group">
+		<div
+			onClick={() => navigate(`/songs/${song.id}`)}
+			className="flex items-center gap-4 p-3 rounded-lg hover:bg-white/5 cursor-pointer transition-colors group"
+		>
 			<img
 				src={song.cover || "/favicon.png"}
@@ -22,7 +49,37 @@
 				</p>
 			</div>
-			<span className="text-xs text-gray-500 uppercase tracking-wider">
+			<span className="text-xs text-gray-500 uppercase tracking-wider mr-2">
 				{song.genre}
 			</span>
+			{song.link && (
+				<button
+					onClick={(e) => {
+						e.stopPropagation();
+						play({
+							id: song.id,
+							title: song.title,
+							artist: song.releasedBy,
+							cover: song.cover,
+							embedUrl: toEmbedUrl(song.link!),
+						});
+					}}
+					className={`p-2 rounded-full transition-all opacity-0 group-hover:opacity-100 ${
+						currentSong?.id === song.id
+							? "bg-white text-[#1db954]"
+							: "bg-[#1db954] text-black hover:scale-110"
+					}`}
+					aria-label={currentSong?.id === song.id ? "Now playing" : "Play song"}
+				>
+					{currentSong?.id === song.id ? (
+						<svg className="w-5 h-5" fill="currentColor" viewBox="0 0 24 24">
+							<path d="M6 19h4V5H6v14zm8-14v14h4V5h-4z" />
+						</svg>
+					) : (
+						<svg className="w-5 h-5" fill="currentColor" viewBox="0 0 24 24">
+							<path d="M8 5v14l11-7z" />
+						</svg>
+					)}
+				</button>
+			)}
 		</div>
 	);
